Objective c 使用编码器保存后如何加载对象?
编辑\u 002:进一步重写:如果我使用下面的方法保存,那么在look中加载它的方法会如何?(moons是NSNumbers的NSMutableArray)Objective c 使用编码器保存后如何加载对象?,objective-c,cocoa,Objective C,Cocoa,编辑\u 002:进一步重写:如果我使用下面的方法保存,那么在look中加载它的方法会如何?(moons是NSNumbers的NSMutableArray) gary找到了它,我的问题是我在用 [moons encodeWithCoder:archiver]; [archiver encodeObject:moons]; 我应该用的地方 [moons encodeWithCoder:archiver]; [archiver encodeObject:moons]; 因此,加载程序看起来像
gary找到了它,我的问题是我在用
[moons encodeWithCoder:archiver];
[archiver encodeObject:moons];
我应该用的地方
[moons encodeWithCoder:archiver];
[archiver encodeObject:moons];
因此,加载程序看起来像:
-(void)loadMoons_V3:(NSString *)loadPath {
NSData *data = [[NSData alloc] initWithContentsOfFile:loadPath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[self setMoons:[unarchiver decodeObject]];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
}
gary找到了它,我的问题是我在用
[moons encodeWithCoder:archiver];
[archiver encodeObject:moons];
我应该用的地方
[moons encodeWithCoder:archiver];
[archiver encodeObject:moons];
因此,加载程序看起来像:
-(void)loadMoons_V3:(NSString *)loadPath {
NSData *data = [[NSData alloc] initWithContentsOfFile:loadPath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[self setMoons:[unarchiver decodeObject]];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
}
加里你现在的东西怎么了?就我个人而言,我更喜欢你的简单版本。使用非简单版本的唯一原因是,如果您必须对对象执行特殊操作或其他操作(或创建非标准文件格式)。简单版本适合我的需要,我只是感兴趣。我可能知道我做错了什么,我会快速查看并用我发现的内容进行编辑…是的,我能看到的唯一问题是1)如果卫星不是财产或不是保留财产;或者2)如果loadPath是一个不正确的路径(即,与savePath不同)。我现在想说,我实际上不想使用encodeWithCoder,这有点像initWithCoder,因为我不需要调用它。我只是想大声说出来,但我可能会更好地使用NSKeyedArchiver类方法或encode/decode forKey?就我个人而言,我更喜欢你的简单版本。使用非简单版本的唯一原因是,如果您必须对对象执行特殊操作或其他操作(或创建非标准文件格式)。简单版本适合我的需要,我只是感兴趣。我可能知道我做错了什么,我会快速查看并用我发现的内容进行编辑…是的,我能看到的唯一问题是1)如果卫星不是财产或不是保留财产;或者2)如果loadPath是一个不正确的路径(即,与savePath不同)。我现在想说,我实际上不想使用encodeWithCoder,这有点像initWithCoder,因为我不需要调用它。只是想大声说出来,但我可能会更好地使用NSKeyedArchiver类方法或编码/解码forKey。