3

次のコード:

[[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

photoIdToPathXcode デバッグ コンソールからのディクショナリ コンテンツ分析は次のとおりです。

(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、なぜこのディクショナリはプロパティ リストではないのですか?

アップデート:

ここhttps://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsuserdefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/setObject:forKey : テキストが見つかりました:

値パラメーターは、プロパティ リスト オブジェクトのみにすることができます: NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary。NSArray および NSDictionary オブジェクトの場合、その内容はプロパティ リスト オブジェクトである必要があります。「プロパティ リストとは」を参照してください。プロパティ リスト プログラミング ガイドの

4

1 に答える 1