これは、NSUserDefaults を使用する最初の試みです。この件に関してstackoverflowに投稿されたすべての質問と回答を読みましたが、まだ機能しません。基本的なものが欠けているに違いありません。配列 (allContacts) には、名前と電話番号がいくつか含まれているだけです。何が起こっているのか誤解していない限り、両方のフィールドは NSStrings です。それとも文字列への単なるポインタですか? その場合、それらを実際の NSStrings に変換するにはどうすればよいですか? 配列を保存するコードは次のとおりです。
- (BOOL)saveChanges
{
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithArray:allContacts];
[[NSUserDefaults standardUserDefaults] setObject:mutableArray forKey:@"allContacts"];
[[NSUserDefaults standardUserDefaults] synchronize];
return 1;
}
ここに私のログ:
2013-08-07 15:48:17.568 ImOK[5515:907] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
"Brad Pitt, 1-917-297-1234",
"Marilyn Monroe, 9179291234"
)' of class '__NSArrayM'. Note that dictionaries and arrays in property lists must also contain only property values.
助けてくれてありがとう。
このコード "for(id contact in allContacts) { NSLog(@"%@", [contact class]); }" は私に与えます:
2013-08-07 17:11:30.845 ImOK[5569:907] Contacts
2013-08-07 17:11:30.854 ImOK[5569:907] Contacts
したがって、それらは有効なプロパティ値ではないと思います。ちなみに、配列を NSMutableArray として保存しようとする合理的な理由はありませんでした。私はちょうど実験していました。