我有一個......奇怪的問題。與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