2

キーの NSDates を持つ一連の配列を含む NSDictionary があります。各配列には可変量の NSStrings が含まれます

このようなもの:

NSDictionary

Key: 1999-whatever-whatever
Object: (Array)
   "Some string"
   "Some other string"

Key: 2000-whatever-whatever
Object: (Array)
    "Some third string"

writeToFile を調べてきましたが、キーの NSDates を持つ NSDictionarys をサポートしていないようです。そのため、KeydArchiver を調べました。これが最善のアプローチでしょうか?

もしそうなら、トピックに関するチュートリアルは役に立ちます。

御時間ありがとうございます。

PS: ApplicationWillTerminate で保存する必要があると思いますか?

4

2 に答える 2

4

編集- あなたの質問がiOSと言っていたことに気づきませんでした。したがって、辞書をデスクトップに保存した方法は無視してください。ただし、NSDate を文字列として保存する方法は同じです。

NSDictionary の保存方法を変更する場合、KeydArchiver に入る必要はありません。

NSDictionary

Key: 1999-08-13    //<----- Have this as a string in your dictionary. Not NSDate
Object: (Array)
   "Some string"
   "Some other string"

Key: 2000-08-13    //<------Have this as a string in your dictionary. Not NSDate
Object: (Array)
    "Some third string"

NSDictionary をファイルに保存する場合は、次のようにします。

[MyDictionary writeToFile:@"/Users/yourUsername/Desktop/mySavedDictionary.plist" atomically:YES];

辞書を再度ロードする場合:

NSDictionary *myDictionary = [NSDictionary dictionaryWithContentsOfFile:@"/Users/yourUsername/Desktop/mySavedDictionary.plist"];

辞書をロードした後、2000 年 8 月 13 日の日付で保存されたデータを取得したい場合、次のように実行できます。

最初に、NSDatemyPreviouslyDeclaredDateが辞書で調べたい日付であり、yyyy-MM-dd の形式であると仮定します。ただし、必要な形式を選択できます。AppleDocsをガイドとして使用してください。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSString *previouslyDeclaredDateInStringForm = [dateFormatter dateFromString:myPreviouslyDeclaredDate];
id objectNeededFromDictionary = [myDictionary objectForKey:previouslyDeclaredDateInStringForm];
于 2013-08-13T11:18:24.777 に答える