[NSKeyedUnarchiver initForReadingWithData:]:数据为NULL

Mic*_*old 16 objective-c nsuserdefaults ios

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

有没有最好的做法来避免这种情况,这是一个担心吗?

rde*_*mar 22

我不确定你的归档是什么,但是如果你可以先查看密钥,那么在你取消归档之前,你可以这样做:

if ([[[NSUserDefaults standardUserDefaults] dictionaryRepresentation].allKeys containsObject:@"keyForNonMandatoryObject"]) {
        // unarchive the value here
    }
Run Code Online (Sandbox Code Playgroud)

  • 为什么不只是做:`如果([[NSUserDefaults的standardUserDefaults] objectForKey:@ "keyForNonMandatoryObject"]){`?为什么要让整本字典只检查一个密钥? (23认同)