我正在制作简单的程序,可以存档我的对象并在启动时取消存档。
我有一个lists.m ,其中名为favouritesList的可变数组使用归档存储到文件中。在列表中,我有一个名为favouriteItem的简单对象
因此,此代码出现问题
-(void) loadList
{
self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
if(self.favouritesList == nil)
self.favouritesList = [[NSMutableArray alloc]init];
}
我遇到的例外是这个 [NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (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它的工作方式有点不同..你能解释一下它有什么不同吗?我怎样才能避免这个错误..?谢谢你。