首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initWithCoder没有按预期工作?

initWithCoder没有按预期工作?
EN

Stack Overflow用户
提问于 2010-03-15 17:04:44
回答 2查看 2K关注 0票数 0

这是否正确,dataFilePath在磁盘上并且包含正确的数据,但是MSMutable数组在initWithCoder之后不包含任何对象?我可能只是漏掉了什么,但我想在离开之前尽快检查一下。

代码语言:javascript
复制
-(id)initWithCoder:(NSCoder *)decoder {
    self = [super init];
    if(self) {
        [self setReactorCore:[decoder decodeObjectForKey:@"CORE"]];
    }
    return self;
}

代码语言:javascript
复制
-(id)init {
    self = [super init];
    if(self) {
        if([[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]]) {
            NSMutableData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
            NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
            NSMutableArray *newCore = [[NSMutableArray alloc] initWithCoder:unArchiver];
            [self setReactorCore:newCore];
            [newCore release];
            [data release];
            [unArchiver release];
        } else {
            NSMutableArray *newCore = [[NSMutableArray alloc] init];
            [self setReactorCore:newCore];
            [newCore release];
        }
    }
    return self;
}

EDIT_001

我想我知道我哪里出错了,我正在归档NSData,然后尝试用它初始化我的NSMutable数组。我将重做代码,并发布一个更新。

加里

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-15 17:27:13

我搞不懂你为什么要这样做。你通常不会自己打电话给initWithCoder:。你要求编码器提供它的内容,它为你创建对象。该方法的整个解码部分应该是id archivedObject = [NSKeyedUnarchiver unarchiveObjectWithFile:[self dataFilePath]],其中archivedObject大概是您在代码中调用的newCore数组(我不知道文件的内容,因此我只是从您编写的内容中猜测)。在这种情况下,您会想要mutableCopy它,因为我不认为NS*Archiver保持可变。

我还希望您不要期望您在文章顶部编写的initWithCoder:方法在此NSArray未存档时被调用。

票数 1
EN

Stack Overflow用户

发布于 2010-07-07 10:18:27

“我还希望您不要期望您在文章顶部编写的initWithCoder:方法在这个NSArray未存档时被调用。”

是没用的。为什么你不能写为什么不叫它?谢谢

编辑:--实际上,如果数组中的对象实现NSCoding,则在还原数组时对每个对象调用initWithCoding (还原这里意味着调用解码器decodeObjectForKey:@"yourArray")。我实际上是用我自己的代码做的。所以我觉得你写的是假的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2448963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档