16

在我保存到 NSUserDefaults 的设置中,有一个非强制性的对象,它没有开箱即用的默认值。在用户为此对象设置值之前,当我从 NSUserDefaults 取消归档时,应用程序会生成错误“[NSKeyedUnarchiver initForReadingWithData:]: data is NULL”。我忽略了该错误,否则该应用程序可以正常工作。

是否有避免这种情况的最佳做法,这是否令人担忧?

4

1 回答 1

22

我不确定您要取消存档的确切内容,但是如果您可以先查看密钥,然后再取消存档,则可以这样做:

if ([[[NSUserDefaults standardUserDefaults] dictionaryRepresentation].allKeys containsObject:@"keyForNonMandatoryObject"]) {
        // unarchive the value here
    }
于 2013-06-04T23:11:39.070 回答