缓存自定义类

时间:2012-02-12 13:46:42

标签: objective-c ios

在我的应用程序中,我正在使用SimpleKML框架

https://github.com/mapbox/Simple-KML

我有一些大文件需要大约5秒来处理这个库。我想将对象缓存在像NSData这样的东西中。

我已阅读Apple的这个教程:

https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Articles/archives.html

但我真的不知道使用nscoder是最好的方法。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您想使用NSKeyedArchiverNSKeyedUnarchiver

如果您要保存的对象(以及它作为属性的对象及其属性等)实现NSCoding协议,那么它就像

一样简单
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:someObject];
[savedData writeToFile:pathToSaveFile atomically:YES];

将对象存档到NSData中,然后将其保存到磁盘,然后再将其保存到

NSData *loadedData = [NSData dataWithContentsOfFile:pathToSaveFile];
SomeClass *foo = [NSKeyedUnarchiver loadedData]

加载数据并从数据中取消归档对象。

如果没有,您需要覆盖相关对象的initWithCoder:encodeWithCoder:,以使其正确序列化。