编辑(2012/10/22): 希望更清楚地重述这个问题。
基本上,我正在寻找的是一些可以(un)在多个位置之间存档的NSCoder。一些编码对象基元应保存在位置A中,而其他基元应保存在指定位置B等中
例如,假设我们有一个类似这样的类:
@interface SomeClass
{
NSString *ivar1;
NSString *ivar2;
NSString *ivar3;
SomeClass *ivarZ;
}
...
@end
我们有一个实例:
SomeClass *someObject;
我想要做的是保存以下内容:
NSData *prefDat = [KeyedMultiArchiver archiveRootObject:someObject
withPartitionKey:@"DataForNSUserDefaults"];
NSData *permDat = [KeyedMultiArchiver archiveRootObject:someObject
withPartitionKey:@"DataForPermanentStorage"];
/* save prefDat to NSUserDefaults */;
/* save permDat to some appropriate NSURL */;
然后在unarchiving上:
SomeClass *anotherObject = [SomeClass new];
NSData *prefDat = /* get from NSUserDefaults */;
NSData *permDat = /* get from appropriate NSURL */;
[KeyedMultiUnarchiver unarchiveData:prefDat
intoObject:anotherObject
withPartitionKey:@"DataForNSUserDefaults"];
[KeyedMultiUnarchiver unarchiveData:permDat
intoObject:anotherObject
withPartitionKey:@"DataForPermanentStorage"];
ivar1
可能会保存到NSUserDefaults
和ivar2
s,ivar3
到某处的磁盘。
我可能最终会为此编写自己的解决方案,但如果你们想出任何出色的替代方案,请告诉我们!
将发布最终产品。
答案 0 :(得分:0)
嗯,这是我最终提出的解决方案:
https://github.com/xelxebar/BWPartitioning
这不是子类化NSCoder,而是纯粹的自定义框架。上面的存储库是一个XCode项目,应该只是开箱即用。评论很少,而且非常像alpha,但对它的预期使用模式有一些解释。
随意使用此功能,您可以和/或提出任何问题。感谢您的反馈。
干杯!