IPhone SDK - 如何序列化ABRecord?

Mak*_*tar 5 iphone cocoa serialization cocoa-touch addressbook

我是iPhone开发的新手,你能建议我如何序列化AdressBook记录吗?
我已经阅读了stackoverflow - 如何在iPhone sdk中序列化一个简单的对象,但我仍有疑问:我应该扩展ABRecordRef吗?可能吗?或者我应该实现自己的类NSObject?

(类似的问题是在Mac论坛上,没有回答)

谢谢!

ton*_*lon 12

ABRecord是一种不透明的C类型.它不是Objective-C意义上的对象.这意味着您无法扩展它,您无法在其上添加类别,您无法发送消息.您唯一能做的就是使用ABRecord作为参数调用ABRecord Reference中描述的函数.

您可以做两件事来保持ABRecord arround引用的信息:

  1. 获取ABRecords id ABRecordGetRecordID().ABRecordID定义为int32_t,因此您可以将其强制转换为NSInteger并将其存储在任何您喜欢的位置.您可以稍后从ABAddressBookGetPersonWithRecordID ()或获取记录ABAddressBookGetGroupWithRecordID().但是请注意,同时用户或其他应用程序可能会更改甚至删除记录.

  2. 将记录中的所有值复制到标准NSObject子类,并使用NSCoding或其他技术来存储它.然后,您将无法从用户可能进行的记录更改或添加中获益.

因为你可以结合两种方法.