2014-09-05 2 views
1

Мне нужно закодировать массив, содержащий несколько экземпляров настраиваемого класса NSObject. Однако, при этом, он возвращает сбой с сообщением:NSCoding encode Array of Objects

- [Person encodeWithCoder]: непризнанные селектор направлен например 0x8ff2c50

класс содержит несколько свойств и хранить их в коллекции является целью класса.

метод энкодер, на котором он выходит из строя такой:

+0

Вам нужно закодировать вам NSObject Свойства класса тоже. – ManiaChamp

ответ

3

Вы должны реализовать протокол NSCoding в вашем Person классе. Любой пользовательский класс, который вы хотите кодировать, в том числе, когда он содержится в коллекции, которую вы кодируете, должен реализовать NSCoding.

Вам необходимо реализовать encodeWithCoder: и initWithCoder:.

Вот документация по протоколу NSCoding:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html

0

Я надеюсь, что она будет работать .....

-(void)encodeWithCoder:(NSCoder *)aCoder 
    { 
    [aCoder encodeObject:_arrayOfPeople forKey:@"DataStoragePeopleArray"]; 
    } 

-(id)initWithCoder:(NSCoder *)aCoder 
{ 
    if(self = [super init]){ 
    self.yourpoperty = [aCoder decodeObjectforKey:@"DataStoragePeopleArray"]; 
    } 
    return self; 
    }