В заголовочном файле укажите, что ваш класс будет реализовывать протокол NSCoding
, например <NSCoding>
В методе encodeWithCoder
вам необходимо закодировать все поля, которые вы хотите сохранить, следующим образом:
[encoder encodeObject:array1 forKey:@"array1"];
Затем в методе initWithCoder
декодируйте поля, которые были закодированы:
array1 = [coder decodeObjectForKey:@"array1"];
Убедитесь, что любые закодированные контейнеры содержат только объекты, которые также реализуют протокол NSCoding
. Это могут быть базовые классы, такие как NSString
, NSNumber
, NSArray
, NSDictionary
, а также ваш собственный объект.
Если ваш проект не использует сборку мусора, вам нужно сохранить или скопировать данные, извлеченные из архива, например:
array1 = [[coder decodeObjectForKey:@"array1"] retain];