вставить объект в NSMutableArray, сохраненный с помощью NSUserDefaults

У меня есть NSMutableArray, сохраненный с помощью NSUserDefaults. Этот массив - мои «любимые» элементы, которые пользователь может сохранить, поэтому, когда я хочу добавить один элемент, мне нужно прочитать массив (из NSuserDefault) и сохранить его в первой свободной позиции.

Я использую этот метод добавить значение в NSMutableArray

-(IBAction)save{
   NSMutableArray *abc = [[NSUserDefaults standardUserDefaults] objectForKey:@"12345"];
   int n = [abc count];
   [abc insertObject:@"aaa" atIndex:n];
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [[NSUserDefaults standardUserDefaults] setObject:abc forKey:@"12345"];
   [defaults synchronize];
   [abc release];
}

в чем дело? Что, если пользователь вызовет этот метод два раза, во второй раз произойдет сбой приложения с этим журналом:

* Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «- [__ NSCFArray insertObject: atIndex:]: мутирует метод отправлен в неизменяемый объект »

почему? а почему только второй раз? Первый раз работает нормально!

17
задан JAA 17 March 2011 в 23:10
поделиться