gpt4 book ai didi

objective-c - 使用decodeObjectForKey 时出现问题?

转载 作者:行者123 更新时间:2023-12-03 17:45:01 28 4
gpt4 key购买 nike

我正在尝试了解 NSCoding 的工作原理,但当我尝试取消以前存档的对象时似乎遇到了问题,这就是我正在做的事情......

// CREATE EARTH & ADD MOON
Planet *newPlanet_002 = [[Planet alloc] init];
[newPlanet_002 setName:@"Earth"];
[newPlanet_002 setType:@"Terrestrial Planet"];
[newPlanet_002 setMass:[NSNumber numberWithInt:1]];
[newPlanet_002 addMoon:[moonsOfEarth objectAtIndex:0]];

// ARCHIVE PLANET OBJECTS (Save)
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:newPlanet_002 forKey:@"EARTH"];
[archiver finishEncoding];

BOOL success = [data writeToFile:PathName atomically:YES];
if(success == YES) NSLog(@"Write: OK");
[archiver release];
[data release];

// UNARCHIVE PLANET EARTH (Load)
NSData *dataStore = [[NSData alloc] initWithContentsOfFile:PathName];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:dataStore];
[unarchiver finishDecoding];

Planet *savedPlanet = [unarchiver decodeObjectForKey:@"EARTH"];

问题似乎出在上面的最后一行,我想我错了。我的类(class)看起来像...

@interface Planet : NSObject <NSCoding>
{
NSString *name;
NSString *type;
NSNumber *mass;
NSMutableArray *moons;
}
@property(retain, nonatomic) NSString *name;
@property(retain, nonatomic) NSString *type;
@property(retain, nonatomic) NSNumber *mass;
@property(retain, nonatomic) NSMutableArray *moons;

我的 initWithCoder 像这样......

-(id)initWithCoder:(NSCoder *)aDecoder {
NSLog(@"_initWithCoder:");
self = [super init];
if(self) {
[self setName:[aDecoder decodeObjectForKey:@"NAME"]];
[self setType:[aDecoder decodeObjectForKey:@"TYPE"]];
[self setMass:[aDecoder decodeObjectForKey:@"MASS"]];
[self setMoons:[aDecoder decodeObjectForKey:@"MOONS"]];
}
return self;
}

任何帮助将不胜感激。

加里

最佳答案

一旦调用了finishDecoding,就无法再调用decodeObjectForKey:。你显然还没有“完成解码”。完成后,您可以调用 finishDecoding

关于objective-c - 使用decodeObjectForKey 时出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com