我想序列化一堆数据并将其保存到文件中,然后能够(自然地)加载它并使用我编写的功能播放它。 (对不起,如果我的术语没有了,我就是这样的新手了。)iOS的最佳方法是什么?从这里查看文档:
Standard Application Behaviors Guide
我收集到了我应该使用的内容 NSSearchPathForDirectoriesInDomains用于查找适当的存储目录根目录(Documents?),然后使用NSData存储我创建的这些数据缓冲区并将其写入文件。我是否发现了这个或者我弄错了?还有其他任何圣人的建议吗?
答案 0 :(得分:18)
你可以使用plist 在不使用核心数据的情况下保存字符串或其他数据列表非常容易 见Property List Programming Guide
例如,此代码将保存一个对象(rootObj),该对象可以是数组或字典:
NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
format:NSPropertyListXMLFormat_v1_0
errorDescription:&error];
if(plistData) {
[plistData writeToFile:plistPath atomically:YES];
}
else {
NSLog(@"Error : %@",error);
[error release];
}
受支持的课程有一些限制(参见指南)
答案 1 :(得分:14)
这取决于您所写的数据。如果您最想要序列化对象,请参阅NSCoding协议。如果您有一些不是类的简单数据结构,您可以将其存储到NSDictionary
并将其保存到plist中。如果您有大量数据(例如数千个浮点数或类似的东西),您可能希望使用NSData
保存它,如您已经暗示过的那样。无论如何,请务必阅读Archives and Serializations Programming Guide,以免重新发明轮子。
答案 2 :(得分:1)
是的,非常正确的方向。你需要实现一些东西,在你的对象上称为NSCoding协议,以便能够存档和放大。将其解压缩到NSData中。看例子: Saving files on iOS using NSFileManager