iPhone SDK - 如何序列化 ABRecord?

标签 iphone cocoa cocoa-touch serialization addressbook

我是 iPhone 开发新手,您能告诉我如何序列化 AdressBook 记录吗?
我已阅读stackoverflow - How do I serialize a simple object in iPhone sdk ,但我还有疑问: 我应该扩展 ABRecordRef 吗?是否可以?或者我应该实现自己的类 NSObject?

(Mac forums 上有类似问题,但没有答案)

谢谢!

最佳答案

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

您可以做两件事来保留 ABRecord 周围引用的信息:

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

  2. 将记录内的所有值复制到标准 NSObject 子类,并使用 NSCoding 或其他技术来存储它。那么您自然不会从用户对记录所做的更改或添加中受益。

当然,您可以结合使用这两种方法。

关于iPhone SDK - 如何序列化 ABRecord?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204712/

相关文章:

ios - iTunes Search Lookup for all a Developers Apps

iphone - iOS 如何验证应用程序包?

iphone - 右对齐 UITextField 中的 PlaceHolder 文本

objective-c - Cocoa - XML 错误

ios - Objective-C iOS 应用程序中的 C 风格函数

iphone - em 在 iPhone 浏览器上不工作

objective-c - nextKeyView socket 无法正常工作

Objective-C:正确处理子类 NSControl 和 NSActionCell 之间的共享属性?

ios - UITableViewCell 中的 UILabel - 切断信息

iphone - 对 iPhone 中的日历事件使用react