Objective c 缓存自定义类

Objective c 缓存自定义类,objective-c,ios,Objective C,Ios,在我的应用程序中,我正在使用SimpleXML框架 我有一些大文件,处理这个库大约需要5秒钟。我在考虑将对象缓存在类似NSData的东西中 我从苹果公司读过这篇教程: 但是我真的不知道使用nscoder是最好的方法。有人能给我指出正确的方向吗?你想使用NSKeyedArchiver和NSKeyedArchiver 如果要保存的对象(以及作为属性保存的对象及其属性等)实现了NSCoding协议,那么它就非常简单 NSData *savedData = [NSKeyedArchiver arch

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

我有一些大文件,处理这个库大约需要5秒钟。我在考虑将对象缓存在类似NSData的东西中

我从苹果公司读过这篇教程:


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

你想使用
NSKeyedArchiver
NSKeyedArchiver

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

NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:someObject];
[savedData writeToFile:pathToSaveFile atomically:YES];
将对象归档到NSData中,然后将其保存到磁盘,然后保存到以后

NSData *loadedData = [NSData dataWithContentsOfFile:pathToSaveFile];
SomeClass *foo = [NSKeyedUnarchiver loadedData]
加载数据并从数据中取消归档对象


如果没有,您将需要为相关对象重写
initWithCoder:
encodeWithCoder:
,以使它们正确序列化。

考虑使用NSCache和NSPurgeableData。实际上,我正在寻找可以保存在某个地方的东西,比如文件或其他东西。看起来nscache无法保存,或者是这样吗?我尝试了这个,保存对象很有效。但是,看起来它并没有拯救一切。Nsdata对象的长度是299,非常小。我无法从未归档的对象访问方法或属性。它不是空的,因为当我记录它时,我看到:我读了这篇文章,看起来我做的一切都是对的。SimpleXML对象不能正确实现
NSCoding
协议。请参阅我的更新答案,了解需要做什么。可能值得让项目进行修改,然后发送请求。