2

刚开始学习 iOS,我有一个非常基本的问题:归档/取消归档整个对象集合的正确方法是什么?

我了解您首先需要在类上实现 NSCoder 协议。假设我有一个可以正确归档和取消归档的类,我一直在研究一个如下所示的示例:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docsDir = [paths objectAtIndex:0];
NSString *archivePath = [docsDir stringByAppendingPathComponent:@"thing.model"];
Thing *thing = [[Thing alloc] init];
[NSKeyedArchiver archiveRootObject:thing toFile:archivePath];

现在,这只是将一个保存Thing为文件thing.model,对吗?

所以,如果我的应用程序有很多“东西”并且我想将它们全部归档,你如何处理呢?

更具体地说(如果某些上下文有帮助),我正在开发一个由 Web 服务支持的应用程序,我希望能够在应用程序上创建/编辑记录,将它们保存到磁盘,并定期同步对象我已经使用 Web 服务在本地保存。

谢谢!

4

2 回答 2

4

集合类符合NSCoding. 因此,如果您有一个NSArray对象Thing,只需归档/取消归档数组。

于 2013-05-15T21:56:09.607 回答
0

所以,如果我的应用程序有很多“东西”并且我想将它们全部归档,你如何处理呢?

如果您想单独保存这些内容,-encodeObject:forKey:请使用将对象(以及稍后用于检索它的密钥)添加到存档中。

正如 rmaddy 指出的那样,如果所有东西都在一个集合中,您可以将集合归档为单个对象。同样,您可以-encodeObject:forKey:使用archiveRootObject:toFile:.

于 2013-05-15T21:58:30.407 回答