Вопрос

У меня проблемы с использованием NskeeDarkiver / NskeyeDunarchiver для сохранения моего объекта.
Я добавил методы - (id)initWithCoder:(NSCoder *)decoder а также - (void)encodeWithCoder:(NSCoder *)encoder. Отказ Проблема в том, что когда я пытаюсь сохранить объект, он не работает правильно.
Я мог себе представить проблему (но я не уверен, если это проблема;)). У меня есть несколько массивов внутри моего объекта. Они содержат больше объектов (я также реализовал как «Coder» - Methods, а также). Так что массив вызывает методы в своих объектах?

Любое возможное решение ??

Спасибо!!

Это было полезно?

Решение

В заголовочном файле укажите, что ваш класс будет реализовывать NSCoding Протокол, вроде <NSCoding>

в encodeWithCoder Метод необходимо кодировать все поля, которые вы хотите сохранить так:

[encoder encodeObject:array1 forKey:@"array1"];

Тогда в initWithCoder Метод, декодируют поля, которые были закодированы:

array1 = [coder decodeObjectForKey:@"array1"];

Убедитесь, что любые закодированные контейнеры содержат только объекты, которые также реализуют NSCoding протокол. Это могут быть основные классы, такие как NSString, NSNumber, NSArray, NSDictionary, а также ваш собственный пользовательский объект.

Если ваш проект не использует сборку мусора, вам необходимо сохранить или скопировать данные, полученные из архива, как так:

array1 = [[coder decodeObjectForKey:@"array1"] retain];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top