gpt4 book ai didi

ios - 在这种情况下如何处理 unarchiver..?

转载 作者:行者123 更新时间:2023-11-28 22:09:24 24 4
gpt4 key购买 nike

我正在制作一个简单的程序,可以在启动时存档我的对象并取消存档。

我有一个 lists.m,其中名为 favouritesList 的可变数组使用存档存储到文件中。在列表中,我有一个名为 favouriteItem

的简单对象

那么,问题就出在这段代码上

-(void) loadList
{

self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
if(self.favouritesList == nil)
self.favouritesList = [[NSMutableArray alloc]init];

}

我得到的异常(exception)是这个[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,我只能说如果它返回零,我会第一次分配新的。但是,使用 NSkeyedUnarchiver 它的工作方式有点不同......你能解释一下它有什么不同吗?我怎样才能避免这个错误..?谢谢。

最佳答案

更简单的方法是使用异常处理:

@try {
self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
}
@catch ( NSException *e ) {
self.favouritesList = [[NSMutableArray alloc]init]; // add more code as needed
}

Apple 的文档在这里。

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Exceptions/Tasks/HandlingExceptions.html#//apple_ref/doc/uid/20000059-BBCHGJIJ

关于ios - 在这种情况下如何处理 unarchiver..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com