【发布时间】:2014-04-24 03:01:47
【问题描述】:
我正在制作一个简单的程序,它可以归档我的对象并在启动时取消归档。
我有一个 lists.m,其中名为 favouritesList 的可变数组使用存档存储到文件中。在列表中,我有一个名为 favouriteItem
的简单对象所以,这段代码出现了问题
-(void) loadList
{
self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
if(self.favouritesList == nil)
self.favouritesList = [[NSMutableArray alloc]init];
}
我遇到的例外是这个 [NSKeyedUnarchiver initForReadingWithData:]:无法理解的存档(0x62、0x70、0x6c、0x69、0x73、0x74、0x30、0x30)'
我知道我正在使用空文件取消归档(实际上它是从同样为空的包中的文件中复制的)。
那么,当我仍然希望我的应用程序在启动时从文件中加载数据时,我该如何避免这种情况。 当我用作以下代码时
-(void) loadData {
self.URLLists = [NSMutableArray arrayWithContentsOfFile:self.path];
if(self.URLLists == nil) {
self.URLLists = [[NSMutableArray alloc]init];
}
}
这里,即使 self.path 中的文件是空的,它也会返回 nil,我只能说 如果它返回 nil,我将第一次分配新的。 但是,使用 NSkeyedUnarchiver 它的工作方式有点不同.. 你能解释一下它有什么不同,我怎样才能避免这个错误..? 谢谢。
【问题讨论】:
标签: ios objective-c nskeyedunarchiver