Значения, возвращаемые из NSUserDefaults
, являются неизменяемыми, даже если в качестве значения установлен изменяемый объект.
Вам нужно сделать изменяемую копию после извлечения массива из NSUserDefaults
. К счастью для вас, NSArray
соответствует протоколу NSMutableCopying
, поэтому вам просто нужно отправить mutableCopy
сообщение в массив:
NSMutableArray *valuesList = [[[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray] mutableCopy];
Имейте в виду, что вам принадлежит объект, возвращаемый mutableCopy
в соответствии с Правилами управления памятью . Другими словами, вы должны отпустить его, когда закончите.