【发布时间】:2014-03-19 09:53:27
【问题描述】:
我正在尝试将带有数组值的 NSDictionary 保存到 NSUserDefaults,但遇到了一些奇怪的问题。
我的NSDictionary 有NSStrings 对应keys,每个value 是NSArray 的NSNumbers。当我打印字典时,一切都很好。我把这本词典写给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 包含所有 键,但所有 values 现在都是空的!重新创建类后所有新添加的keys 都存在,但没有values 持续存在。
这里有什么问题?控制台中没有警告或错误。
【问题讨论】:
-
在保存到 NSUserDefaults 时尝试使用 [self.selectedOptionPositions 复制]。
标签: ios objective-c nsarray nsdictionary nsuserdefaults