编码自身不符合NSCoding的对象集合的摘录

时间:2015-03-23 10:48:52

标签: ios objective-c serialization nscoding

我想将自身不符合NSCoding的对象集合中的摘录序列化到文件中。如果不将收集的对象转换为中间表示(符合NSCoding),那么实现此目的的最佳方法是什么?出现(明显)问题,因为NSKeyedArchiver需要唯一键,并且iOS上没有NSArchiver

例如,以下操作无效,因为在重用键时会在循环内覆盖值。从某些循环索引计算唯一键字符串是可能的,但是非常麻烦:

for (MyObject *object in myObjects) {
    NSString *someString = myObject.someString; // excerpted string

    [archiver encodeObject: someString withKey: @"someString"]
}

2 个答案:

答案 0 :(得分:0)

一种方法是将提取的例外编码为数组:

NSMutableArray *extractedStrings = [NSMutableArray array];
for (MyObject *object in myObjects) {
    [extractedStrings addObject:object.someString];
}
[archiver encodeObject:extractedStrings forKey:@"extractedStrings"];

答案 1 :(得分:0)

在这种情况下,添加符合NSCoding的类别已被证明是最佳解决方案:

@interface MyClass (Coding) <NSCoding>
// ...