我保存到NSUserDefaults的设置中有一个非强制性对象,没有合理的默认值。在用户为此对象设置值之前,当我从NSUserDefaults取消归档时,应用程序会生成错误“[NSKeyedUnarchiver initForReadingWithData:]:data为NULL”。我忽略了错误,否则应用程序工作正常。
是否有最好的做法可以避免这种情况,这是一个担心吗?
答案 0 :(得分:22)
我不确定你的归档是什么,但是如果你可以先解开密钥,那么在你取消归档之前,你可以这样做:
if ([[[NSUserDefaults standardUserDefaults] dictionaryRepresentation].allKeys containsObject:@"keyForNonMandatoryObject"]) {
// unarchive the value here
}