1
這裏對象是我的代碼:NSUserDefaults的 - 插入陣列不工作
NSMutableDictionary *newThoughtDict = [[NSMutableDictionary alloc] init];
[newThoughtDict setObject:self.triggerOne.text forKey:@"thought"];
[newThoughtDict setObject:self.date forKey:@"date"];
NSDate *currentDate = [[NSDate alloc] initWithTimeIntervalSince1970:NSTimeIntervalSince1970];
[newThoughtDict setObject:currentDate forKey:@"date"];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *arrayData = [currentDefaults objectForKey:@"thoughtArray"];
if (arrayData != nil)
{
NSMutableArray *savedArray = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];
[savedArray insertObject:newThoughtDict atIndex:0]; //<---error being thrown here
[currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:savedArray] forKey:@"thoughtArray"];
[currentDefaults synchronize];
被拋出的錯誤是: - [__ NSArrayI insertObject:atIndex:]:無法識別的選擇發送到實例0x170200150
似乎像問題是當我插入一個字典到數組,但代碼做這是正確的,所以我想知道如何從NSUserDefaults檢索數組是否有問題..
此外,當我測試應用程序,它應該返回「零」,因爲我還沒有真正c reate NSUserDefault對象和密鑰..
謝謝。
即使在編輯if語句之後,它仍然不起作用:NSArray * unmutableArray = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData]; NSMutableArray * savedArray = [unmutableArray copy]; [savedArray insertObject:newThoughtDict atIndex:0]; 錯誤是在同一個地方 – Broderick 2014-08-29 00:06:11
副本*也*不會做一個可變的副本。你必須調用mutableCopy – 2014-08-29 00:10:06