Вот мой код: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 восстановить объект NSUserDefault и ключ.
Спасибо.
даже после редактирования инструкции if, так что она по-прежнему не работает: NSArray * unmutableArray = [NSKeyedUnarchiver unarchiveObjectWithData: arrayData]; NSMutableArray * savedArray = [unmutableArray copy]; [savedArray insertObject: newThoughtDict atIndex: 0]; ошибка в том же месте – Broderick
копия * тоже * не делает изменяемую копию. Вы должны вызвать mutableCopy –