我有一个带有ABRecordRef的NSMutableArray
我想将它保存到磁盘,我的同事告诉我序列化它。我不知道他在说什么?
我上网了,我看过很多“解决方案”,但我不明白它是如何运作的,或者为什么需要它?
答案 0 :(得分:2)
ABRecord是一个不透明的Core Foundation类,没有相应的免费桥接objective-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值。