代码之家  ›  专栏  ›  技术社区  ›  Maksym Gontar

iPhone SDK-如何序列化Abrecord?

  •  5
  • Maksym Gontar  · 技术社区  · 14 年前

    我是iPhone开发领域的新手,你能建议我如何序列化adressbook记录吗?
    我读过 stackoverflow - How do I serialize a simple object in iPhone sdk 但是我仍然有问题: 我应该扩展abrecordref吗?有可能吗?还是应该实现自己的类nsObject?

    (类似的问题也在讨论中 Mac forums 没有人回答)

    谢谢您!

    1 回复  |  直到 13 年前
        1
  •  12
  •   tonklon    14 年前

    Abrecord是一个不透明的C类型。它不是一个客观C意义上的对象,这意味着你不能扩展它,你不能在它上面添加一个类别,你不能传递它。您唯一能做的就是调用中描述的函数 ABRecord Reference 以abrecord为参数。

    您可以做两件事来保持缩写所引用的信息:

    1. 获取密码 ABRecordGetRecordID() . abrecordid被定义为int32,因此您可以将其强制转换为nsinteger,并将其存储在任何您喜欢的地方。你以后可以从 ABAddressBookGetPersonWithRecordID () ABAddressBookGetGroupWithRecordID() . 但要知道,记录可能会被用户或其他应用程序同时更改甚至删除。

    2. 将记录中的所有值复制到标准nsObject子类,并使用nscoding或其他技术来存储它。因此,您将无法从用户可能对记录所做的更改或添加中获益。

    因为你可以把这两种方法结合起来。