У меня странная проблема при работе с подклассом CCSprite Creature.
Позвольте, мой объект - Существо * существо;
Объявление класса Creature-
@interface Creature : CCSprite <NSCoding>{
int creatureAge;
NSString *creatureName;
}
Реализация
+(id)initializeCreatureWithType:(int)type
{
Creature *creature = nil;
creature = [[[super alloc] initWithFile:[NSString stringWithFormat:@"ch%i_default.png",type]]autorelease];
return creature;
}
Проблема заключается в том, что я сохраняю свой объект существа "существо" в NSUserDefault, используя -
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.creatureName forKey:@"creatureName"];
[encoder encodeInt:self.creatureAge forKey:@"creatureAge"];
}
И декодирую его с помощью -
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
self.creatureName = [decoder decodeObjectForKey:@"creatureName"];
self.creatureAge= [decoder decodeIntForKey:@"creatureAge"];
}
Затем сохраните объект существа, используя -
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:creature];
[defaults setObject:myEncodedObject forKey:@"my_pet"];
И загрузку -
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [defaults objectForKey:@"my_pet"];
Creature* newcreature = (Creature *)[NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];
Проблема в том, что когда я загружаю это, я получаю значение свойства ранее сохраненного существа, ноизображение, назначенное предыдущему существу, возможно, не скопировано.Потому что, если я добавлю новое существо в какой-либо CCLayer, оно не отобразит никакого изображения, хотя и получит значение свойства предыдущего существа.
Что я могу сделать сейчас, чтобы получить новое существо с изображением?нужно ли добавлять имя изображения как отдельное свойство ???