我正在努力创建一个保存和放大器在我的应用程序中加载模块因此,用户可以保存一些特定信息,然后在任何时间点加载它。 我正在保存的是一组NSMutableStrings。我正在创建一个iPad应用程序,因此保存的信息将显示在带有TableView的弹出窗口中。
所以,这是问题所在。我想用我保存的数组填充tableView,为此我需要将我的数组存储在某个地方。我是Objective-c和编程的新手,并且希望你的建议是最好的方法。
我是否应该使用plist来存储带有Keys的数组,因此键将是用户在保存时引入的名称以及tableView单元格的名称?或者一个简单的NSMutableDictionary会做什么?
请指教。
答案 0 :(得分:1)
This answer可能会对您有所帮助。使用核心数据在这里可能有点过分,保存到plist非常容易。这是Benoît对相关问题的回答:
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];
}
其中rootObj
是您要序列化的对象,在本例中是您的数组/字典。
此外,如果您要在应用过程中经常读取/写入此数据,请使用singleton,这样可以在性能方面产生巨大的差异,而不是不断读/写文件。您可以在app-launch上将所有数据加载到单例中,并将其保存在applicationWillTerminate
。
要回答您的数组/字典问题,这取决于您获取字符串的方式以及您希望如何订购字符串。排序数组非常简单,您可以在this回答中看到。
答案 1 :(得分:0)
谢尔盖,根据您的描述,我建议您考虑使用Core Data进行数据存储。
除了存储数据外,Apple还以各种简洁的方式扩展了Core Data的使用,包括使用存储的数据通过使用NSFetchedResultsController来填充UITableViewController
就是这样,给你一个阅读,你应该顺利。