Я пытался научить себя, как использовать методы архивации / разархивирования NSCoder, но я в замешательстве.
У меня есть класс Singleton, который я определил с помощью 8 свойств NSInteger. Я пытаюсь сохранить этот объект на диск, а затем загрузить с диска при необходимости.
У меня есть часть сохранения, и у меня также есть часть загрузки (согласно NSLogs), но после того, как мой метод initWithCoder: загружает свойства объекта соответствующим образом, метод init запускается и сбрасывает мой объект свойства возвращаются к нулю.
Я, вероятно, здесь упускаю что-то простое, но буду признателен за любую помощь!
Мои методы класса для класса Singleton:
+ (Actor *)shareActorState
{
static Actor *actorState;
@synchronized(self) {
if (!actorState) {
actorState = [[Actor alloc] init];
}
}
return actorState;
}
-(id)init
{
if (self = [super init]) {
NSLog(@"New Init for Actor started...\nStrength: %d", self.strength);
}
return self;
}
-(id)initWithCoder:(NSCoder *)coder
{
if (self = [super init]) {
strength = [coder decodeIntegerForKey:@"strength"];
dexterity = [coder decodeIntegerForKey:@"dexterity"];
stamina = [coder decodeIntegerForKey:@"stamina"];
will = [coder decodeIntegerForKey:@"will"];
intelligence = [coder decodeIntegerForKey:@"intelligence"];
agility = [coder decodeIntegerForKey:@"agility"];
aura = [coder decodeIntegerForKey:@"aura"];
eyesight = [coder decodeIntegerForKey:@"eyesight"];
NSLog(@"InitWithCoder executed....\nStrength: %d\nDexterity: %d", self.strength, self.dexterity);
[self retain];
}
return self;
}
-(void) encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeInteger:strength forKey:@"strength"];
[encoder encodeInteger:dexterity forKey:@"dexterity"];
[encoder encodeInteger:stamina forKey:@"stamina"];
[encoder encodeInteger:will forKey:@"will"];
[encoder encodeInteger:intelligence forKey:@"intelligence"];
[encoder encodeInteger:agility forKey:@"agility"];
[encoder encodeInteger:aura forKey:@"aura"];
[encoder encodeInteger:eyesight forKey:@"eyesight"];
NSLog(@"encodeWithCoder executed....");
}
-(void)dealloc
{
//My dealloc stuff goes here
[super dealloc];
}
Я нуб, когда дело доходит до этого, и я пытаюсь научить себя последний месяц, так что прости что-нибудь очевидное.
Спасибо за помощь!