Похоже, вы действительно просто спрашиваете, как реализовать -encodeWithCoder:
и -initWithCoder:
. Это довольно просто:
-(void) encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:characterImage forKey:@"character image"];
[encoder encodeInt:health forKey:@"health"];
[encoder encodeObject:name forKey:@"name"];
}
Вот и все. -initWithCoder:
работает точно так же, за исключением того, что вы вызываете дополнительные методы, такие как: characterImage = [decoder decodeObjectForKey:@"character image"];
.
Если вам нужно предоставить данные в определенном формате для работы с целевым устройством, которое не поддерживает формат архива, вы можете сделать это вместо этого и использовать метод -encodeBytes:length:forKey:
для хранения того, что вам нравится, или для записи данных. в вашем собственном формате в объект NSMutableData и затем используйте -encodeObject:forKey:
для этого. Вашему целевому устройству все еще может понадобиться найти ваши данные в любом конверте, в котором их хранит кодер; Вы можете сделать это проще, начав с известной серии байтов. Я не уверен, нужно ли это в вашем случае, но об этом нужно помнить.