0

编辑(2012 年 10 月 22 日):希望以更清晰的方式重申这个问题。

本质上,我正在寻找的是一些可以在多个位置之间(取消)归档的 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 */;

然后在取消归档:

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"];

where ivar1s 可能会被保存到NSUserDefaults并且ivar2s, ivar3s 到磁盘的某个地方。

我可能最终会为此编写自己的解决方案,但是如果你们想出任何出色的替代方案,请告诉我!

将发布最终产品。

4

1 回答 1

0

好吧,这是我最终提出的解决方案:

https://github.com/xelxebar/BWPartitioning

这不是继承 NSCoder,而是纯粹的自定义框架。上面的存储库是一个 XCode 项目,应该开箱即用。评论很少,而且它非常 alpha,但对它的预期使用模式有一些解释。

随意使用它,但是您可以和/或提出任何问题。反馈表示赞赏。

干杯!

于 2012-11-02T09:01:55.750 回答