【问题标题】:NSMutableArray of ABRecordRef. How do I serialize?ABRecordRef 的 NSMutableArray。如何序列化?
【发布时间】:2012-05-03 01:36:58
【问题描述】:

我有一个带有 ABRecordRef 的 NSMutableArray

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

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

【问题讨论】:

    标签: objective-c serialization nsmutablearray nsdictionary


    【解决方案1】:

    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 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多