Другие способы сохранить NSMutableArray в Xcode

Я получаю сообщение об ошибке, когда пытаюсь сохранить свой NSMutableArray в NSUserDefaults, и я прочитал достаточно, чтобы понять это, потому что мой массив выглядит следующим образом:

CustomClass *customObject;
NSMutableArray *mutArray = [[NSMutableArray alloc]initWithObjects:customObject,nil];

Поскольку у mutArray есть объект, не являющийся списком свойств (customObject), он не может быть сохранен ни в NSUserDefaults, ни в файле .plist, поэтому мне нужен другой способ сохранить его.


person raej2010    schedule 05.03.2014    source источник


Ответы (2)


Заставьте CustomClass реализовать протокол < NSCoding >, затем заархивируйте экземпляр в данные. Теперь вы можете добавить данные в массив / plist. Или сохраните на диск.

person Wain    schedule 05.03.2014

При сохранении изменяемого массива (или словаря) его «изменчивость» не должна вас смущать. Вы бы сохранили его, как его неизменяемого брата.

Чтобы сделать его снова изменяемым при загрузке, вы должны загрузить его и вызвать mutableCopy для загруженного объекта. Я знаю, что сейчас это не ваш вопрос, но, думаю, скоро ответит.

Чтобы успешно сохранить массив или словарь, все объекты (их классы ...), содержащиеся в контейнере, должны соответствовать протоколу <NSCoding>. Подробнее об этом здесь, на SO.

person Rok Jarc    schedule 06.03.2014