在iOS中保存数据有哪些select?

我想序列化一堆数据并保存到一个文件,然后能够加载(自然),并用我写的function回放。 (对不起,如果我的术语是closures的,我是这样的新手。)什么是最好的方式与iOS做到这一点? 从这里查看文档:

标准应用程序行为指南

我已经收集到,我应该使用NSSearchPathForDirectoriesInDomains来find合适的存储目录根(Documents?),然后使用NSData来存储我创build的这些数据缓冲区并将它们写入文件。 我是否注意到了这个问题,或者我弄错了? 任何其他的忠告?

你可以使用plist。
在不使用核心数据的情况下保存string或其他数据的列表是非常容易的。
请参阅Property List编程指南

例如,这段代码将保存一个可以是数组或字典的对象(r​​ootObj):

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]; } 

受支持的类有一些限制(参见指南)

这取决于你正在写的数据。 如果您主要想要序列化对象,请参阅NSCoding协议。 如果你有一些不是类的简单的数据结构,你可以将它存储到一个NSDictionary并保存到plist中。 如果你有大量的数据(比如成千上万的浮点数或类似的东西),你可能想要保存使用NSData就像你已经暗示的那样。 在任何情况下都要确保阅读“ 存档和序列化编程指南”,以免重蹈覆辙。

是的,非常正确的方向。 你需要在你的对象上实现一些东西,叫做NSCoding协议,以便将其归档和解压缩到NSData中。 请参阅示例: 使用NSFileManager在iOS上保存文件