1

我有一个带有 ABRecordRef 的 NSMutableArray

我想将它保存到磁盘,我的同事告诉我序列化它。我不知道他在说什么?

我在网上浏览过很多“解决方案”,但我不明白它是如何工作的或为什么需要它

4

1 回答 1

2

ABRecord 是一个不透明的核心基础类,没有相应的免费桥接目标 c 类。如果它是一个 Objective-C 类,你可以像@Toro 建议的那样使用 NSCoder。

假设您的可变数组是 ABPerson 引用的列表,您可以执行以下操作:

NSMutableArray newArr = [NSMutableArray array];
for(id obj in mutableArray) {
    ABRecordRef ref = (ABRecordRef)obj;
    ABRecordID recordID = ABRecordGetRecordID(ref);
    NSValue* v = [NSValue value:recordID withObjCType:@encode(ABRecordID)];
    [newArr addObject:v];
}
// newArr is a list of NSValues holding ABRecordIDs, which can be serialized.

反序列化时,从每个 NSValue 中获取 ABRecordID,然后在其上调用 ABAddressBookGetPersonWithRecordID() 以获取 ABRecordRef。请记住,用户可能会删除记录,因此,您可能会从该函数返回 NULL 值。

于 2012-05-03T07:12:33.337 回答