2

我在这里阅读了很多关于此的主题,但我还没有找到它。

我想要一个 UITableView,我可以在其中放置一些字典,并在其中包含一些字段(大约 4 个)的单词。到目前为止还可以,但我的问题是在将应用程序升级到新版本后不擦除数据的最佳方法是什么。我的意思是,当用户升级应用程序时,所有这些单词/词典都不会因为更新而被删除。

我不知道我是否应该使用单词类的 NSMutableArray(例如),还是使用 Core Data 或 SQLite。

任何帮助将不胜感激。提前致谢。

4

2 回答 2

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

rootObject只要符合 NSCoding 协议,您就可以添加更多对象。

于 2012-01-14T05:08:02.703 回答
0

好吧,我认为您可以将该数据存储在 NSUserDefaults 或 Documents 目录中。更新时不会删除 Documents 目录的内容。

于 2012-01-14T04:52:57.583 回答