使用encodeWithCoder保存后如何加载对象?

时间:2010-03-16 18:47:27

标签: objective-c cocoa

EDIT_002:进一步重写:如果我使用下面的方法保存,那么将该方法加载回去看看怎么样? (卫星是NSNumbers的NSMutableArray)

// ------------------------------------------------------------------- **
// METHOD_002
// ------------------------------------------------------------------- **

-(void)saveMoons:(NSString *)savePath {
    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [moons encodeWithCoder:archiver];
    [archiver finishEncoding];
    [data writeToFile:savePath atomically:YES];

    [archiver release];
    [data release];
}

加里

1 个答案:

答案 0 :(得分:1)

找到它,我的问题是我正在使用......

[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];
}

加里