Как сохранить объект класса NSObject с помощью архивирования файлов

Я пытаюсь сохранить объект класса NSObject, используя архивирование файлов. Когда я попытался

[NSKeyedArchiver archiveRootObject:myObject toFile:@"filePath"];

а также

NSArray *myArray=@[myObject];
[NSKeyedArchiver archiveRootObject:myObject toFile:@"FilePath"];

Но оба возвращают предупреждение !!

* Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: '- [ePub encodeWithCoder:]: непризнанный селектор, отправленный экземпляру 0xeac3570'

1 ответ

Вы должны поместить encodeWithCoder и Decoder в свой NSObject:

в заголовке:

- (void)encodeWithCoder:(NSCoder *)coder;
- (id)initWithCoder:(NSCoder *)coder;

в вашем.m

- (void)encodeWithCoder:(NSCoder *)coder;
{
 [coder encodeObject:self.yourProperty forKey:@"yourProperty"];
}



- (id)initWithCoder:(NSCoder *)coder;
{
 self = [super init];
 if (self != nil)
 {

 self.yourProperty = [coder decodeObjectForKey:@"yourProperty"];


 }
 return self;
}

вам нужно сделать это для всех свойств.

Обратите внимание, что для других типов, таких как целые числа и поплавки, используйте соответственно decodeIntForKey и EncodeInt.

licensed under cc by-sa 3.0 with attribution.