我有一个......奇怪的问题。
我将NSDictionary添加到NSArray,然后将其保存为默认值。当我在用户默认值上检查该键的对象计数时,它表示计数为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
所以是的。我无法解决它。 :/
提前致谢。 :)
答案 0 :(得分:3)
你确定defaults
不是零吗?
答案 1 :(得分:1)
你真的只是将NSString
个实例放入字典吗?每次我从NSUserDefaults
看到不完整的保存时,都是因为字典中的某些对象与plist格式不兼容。您只能在plist格式的所有版本上存储NSNumber
,NSString
,NSArray
,NSDictionary
,NSData
(某些版本也允许NSDate
)