Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用编码器保存后如何加载对象?_Objective C_Cocoa - Fatal编程技术网

Objective c 使用编码器保存后如何加载对象?

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]; 因此,加载程序看起来像

编辑\u 002:进一步重写:如果我使用下面的方法保存,那么在look中加载它的方法会如何?(moons是NSNumbers的NSMutableArray)


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。