3

我有一个以 NSNumbers 作为值和键的 NSDictionary。这些数字代表应用程序中的某些设置,我想将字典存储在 UserDefaults 中。由于 NSNumbers 是一个属性列表对象,我认为这应该可以工作,但我检索到以下错误:

*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '{ 2 = 1; }' of class '__NSDictionaryM'. Note that dictionaries and arrays in property lists must also contain only property values.

我使用的(简化的)测试代码是:

NSNumber *one = [NSNumber numberWithInt:1];
NSNumber *two = [NSNumber numberWithInt:2];
NSDictionary *defaultSetting = [[NSDictionary alloc] initWithObjectsAndKeys: one, two, nil];
[[NSUserDefaults standardUserDefaults] setObject:defaultSetting forKey:@"settings"];

为什么这不起作用?我看不出有什么问题?

感谢您的时间和回复。

4

1 回答 1

6

你的字典必须是这样的:

NSDictionary *defaultSetting = [[NSDictionary alloc] initWithObjectsAndKeys:
                                                         one, @"one", 
                                                         two, @"two", 
                                                         nil];
于 2013-09-12T13:57:25.413 回答