我有一个......奇怪的问题。与NSDictionary阵列不想保存到标准用户默认设置
我正在添加NSDictionary到NSArray,然后将其保存为默认值。当我检查用户默认值上的那个键的对象计数时,它说count是0,但“在内存中”的数组有这个对象(所以计数为1)。
的代码,它给出的输出一起是这样的:
(阵列是一个NSArray,默认是[NSUserDefaults的standardUserDefaults])
- (void)addSongToQueue:(NSDictionary *)songData {
[array addObject:songData];
[defaults setObject:array forKey:@"OfflineArray"];
[defaults synchronize];
#if DEBUG
NSLog(@"Dictionary Data Received: %@", songData);
NSLog(@"Object Count on Array: %u", [array count]);
NSLog(@"Object Count on Defaults: %u", [[NSArray arrayWithArray:[defaults objectForKey:@"OfflineArray"]] count]);
[defaults removeObjectForKey:@"OfflineArray"];
[defaults synchronize];
#endif
}
这是我正在呼叫它:
[className addSongToQueue:[NSDictionary dictionaryWithObjectsAndKeys:@"yadda", @"yadda", nil]];
这是输出:(我跑了两遍,以确保公正:P)
2010-10-11 21:47:35.807 AppName[1119:207] Dictionary Data Received: {
yadda = yadda;
}
2010-10-11 21:47:35.807 AppName[1119:207] Object Count on Array: 1
2010-10-11 21:47:35.808 AppName[1119:207] Object Count on Defaults: 0
2010-10-11 21:47:36.647 AppName[1119:207] Dictionary Data Received: {
yadda = yadda;
}
2010-10-11 21:47:36.647 AppName[1119:207] Object Count on Array: 2
2010-10-11 21:47:36.648 AppName[1119:207] Object Count on Defaults: 0
所以是的。我无法解决它。 :/
在此先感谢。 :)
看看这里的一个可能的解决方案,你需要对对象进行编码http://stackoverflow.com/questions/471830/why-nsuserdefaults-failed-to-save-nsmutabledictionary-in-iphone-sdk – 2010-10-11 21:00:08