次のコード:
[[NSUserDefaults standardUserDefaults] setObject:photoIdToPath forKey:@"photo_id_to_path"];
次のエラーが表示されます。
Attempt to set a non-property-list object {
417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729";
} as an NSUserDefaults value for key photo_id_to_path
photoIdToPath
Xcode デバッグ コンソールからのディクショナリ コンテンツ分析は次のとおりです。
(lldb) po photoIdToPath
{
417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729";
}
(lldb) po [[[photoIdToPath allKeys] lastObject] class]
__NSCFNumber
(lldb) po [[[photoIdToPath allValues] lastObject] class]
NSPathStore2
NSPathStore2
のサブクラスなのでNSString
、なぜこのディクショナリはプロパティ リストではないのですか?
アップデート:
値パラメーターは、プロパティ リスト オブジェクトのみにすることができます: NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary。NSArray および NSDictionary オブジェクトの場合、その内容はプロパティ リスト オブジェクトである必要があります。「プロパティ リストとは」を参照してください。プロパティ リスト プログラミング ガイドの