我一直在阅读这么多关于此的主题,但我还没有找到它。
我想要一个UITableView,我可以在其中放置一些字典,在其中,有一些字段(大约4个)。到目前为止还可以,但我的问题是在将应用程序升级到新版本后,不擦除数据的最佳方法是什么。我的意思是,当用户升级应用时,由于更新,所有这些词/词典都不会被删除。
我不知道是否应该使用单词类的NSMutableArray(例如),或者使用Core Data或SQLite。
非常感谢任何帮助。 提前谢谢。
答案 0 :(得分:1)
如果您的词典实际上是NSDictionaries,则使用NSCoding协议将它们序列化到文档内部的文件是简单,快速和可靠的。如果您升级应用程序,Documents目录的内容将保持不变。
这是我在其中一个应用中使用的代码(它保存了一个已被用户收藏的引号列表)
- (BOOL) saveQuotesToDisk
{
//get path to events list
NSArray * dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * fullpath = [NSString stringWithFormat:@"%@/%@", [dirPaths objectAtIndex:0], @"FavQuoteList.plist"];
//create data to be saved
NSMutableDictionary * rootObject = [NSMutableDictionary dictionary];
[rootObject setValue: _SavedQuotes forKey:@"_SavedQuotes"];
//write data
bool success = [NSKeyedArchiver archiveRootObject: rootObject
toFile: fullpath];
if (success) NSLog(@"Quotes list saved.");
else NSLog(@"ERROR on saving quotes list!");
return success;
}
- (BOOL) readFavoriteQuotesFromDisk
{
//get path to quote list
NSArray * dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * fullpath = [NSString stringWithFormat:@"%@/%@", [dirPaths objectAtIndex:0], @"FavQuoteList.plist"];
//read data
NSDictionary * rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile: fullpath ];
_SavedQuotes = [[rootObject valueForKey:@"_SavedQuotes"] retain];
//check data
if (_SavedQuotes == nil) return NO;
else return YES;
}
只要符合NSCoding协议,您就可以向rootObject
添加更多对象。
答案 1 :(得分:0)
我认为您可以将这些数据存储在NSUserDefaults或Documents目录中。更新时不会删除Documents目录的内容。