刚刚开始学习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
,对吗?
所以,如果我的应用程序有很多“东西”并且我想将它们全部归档,那么你如何处理它?</ p>
更具体地说(如果某些上下文有帮助),我正在开发一个由Web服务支持的应用程序,我希望能够在应用程序上创建/编辑记录,将它们保存到磁盘,并定期将本地保存的对象与Web服务同步。
谢谢!
答案 0 :(得分:4)
集合类符合NSCoding
。因此,如果您有NSArray
个Thing
个对象,只需归档/取消归档数组。
答案 1 :(得分:0)
所以,如果我的应用程序有很多“东西”并且我想将它们全部归档,那么你如何处理它?</ p>
如果您想单独保存这些内容,请使用-encodeObject:forKey:
将一个对象(以及稍后用于检索它的密钥)添加到存档。
正如rmaddy指出的那样,如果所有内容都在集合中,您可以将集合归档为单个对象。同样,您可以使用-encodeObject:forKey:
执行此操作,或者如果集合是存档中的唯一内容,则可以使用archiveRootObject:toFile:
按照上述方式执行此操作。