2

これについてここで非常に多くのトピックを読んでいますが、まだ見つけることができませんでした.

いくつかの辞書を入れて、その中にいくつかのフィールド (約 4) を持つ単語を入れることができる UITableView が必要です。これまでのところ問題ありませんが、私の質問は、アプリを新しいバージョンにアップグレードした後にデータを消去しないための最良の方法は何ですか. つまり、ユーザーがアプリをアップグレードしても、更新によってこれらの単語/辞書がすべて削除されることはありません。

単語のクラスの NSMutableArray を使用する必要があるか (たとえば)、Core Data を使用するか、SQLite を使用する必要があるかはわかりません。

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

1

実際に NSDictionaries である辞書がある場合、NSCoding プロトコルを使用してそれらをドキュメント内のファイルにシリアル化することは、簡単、高速、かつ信頼性があります。アプリをアップグレードしても、Documents ディレクトリの内容は変更されません。

これは、私のアプリの 1 つで使用するコードです (ユーザーがお気に入りにした引用のリストを保存します)。

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

rootObjectNSCoding プロトコルに準拠している限り、さらにオブジェクトを追加できます。

于 2012-01-14T05:08:02.703 に答える
0

そのデータを NSUserDefaults または Documents ディレクトリに保存できると思います.Documents ディレクトリのコンテンツは更新時に削除されません..

于 2012-01-14T04:52:57.583 に答える