我正在尝试将值为数组的NSDictionary保存到NSUserDefaults中,但出现一些奇怪的问题。
我的NSDictionary的键是NSStrings,每个值都是由NSNumbers组成的NSArray。当我打印字典时,一切都正常。我将此字典写入NSUserDefaults中,如果我立即将其读回来,一切都正常。使用以下代码,一切看起来都很好:
问题出现在我创建一个处理此问题的类的新实例时。当我创建该类的新实例并在init方法中检查NSDictionary时,如下所示:
当我打印日志时,
这里可能出了什么问题?控制台中没有警告或错误。
我的NSDictionary的键是NSStrings,每个值都是由NSNumbers组成的NSArray。当我打印字典时,一切都正常。我将此字典写入NSUserDefaults中,如果我立即将其读回来,一切都正常。使用以下代码,一切看起来都很好:
[[NSUserDefaults standardUserDefaults] setObject:self.selectedOptionPositions
forKey:PREF_OPTIONS_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];
//THIS PRINT EVERYTHING OUT EXACTLY AS IT SHOULD!
NSLog(@"read after write: %@", [[NSUserDefaults standardUserDefaults]
objectForKey:PREF_OPTIONS_KEY]);
问题出现在我创建一个处理此问题的类的新实例时。当我创建该类的新实例并在init方法中检查NSDictionary时,如下所示:
NSLog(@"read initial: %@", [[NSUserDefaults standardUserDefaults]
objectForKey:PREF_OPTIONS_KEY]);
当我打印日志时,
NSDictionary
包含所有的 keys,但是所有的 values
现在都为空!即使在重新创建类之后,所有新添加的 keys
都存在,但是没有任何 values
持续存在。这里可能出了什么问题?控制台中没有警告或错误。