我保存到NSUserDefaults的設置中有一個非必需對象,它具有開箱即用的默認設置。在用戶爲這個對象設置一個值之前,當我從NSUserDefaults解除存檔時,應用程序會生成錯誤「[NSKeyedUnarchiver initForReadingWithData:]:data is NULL」。我忽略了錯誤,否則應用程序正常工作。[NSKeyedUnarchiver initForReadingWithData:]:data is NULL
有避免這種情況的最佳做法,這是一個擔心嗎?
我保存到NSUserDefaults的設置中有一個非必需對象,它具有開箱即用的默認設置。在用戶爲這個對象設置一個值之前,當我從NSUserDefaults解除存檔時,應用程序會生成錯誤「[NSKeyedUnarchiver initForReadingWithData:]:data is NULL」。我忽略了錯誤,否則應用程序正常工作。[NSKeyedUnarchiver initForReadingWithData:]:data is NULL
有避免這種情況的最佳做法,這是一個擔心嗎?
我不知道你解除存檔什麼,但如果你可以看一下鍵第一,你之前解除存檔,你可以做這樣的:
if ([[[NSUserDefaults standardUserDefaults] dictionaryRepresentation].allKeys containsObject:@"keyForNonMandatoryObject"]) {
// unarchive the value here
}
如果你不想該密鑰的默認值,那麼不要在第一個位置創建密鑰。只有在用戶設置值時才創建它。 – rdelmar
但是在啓動應用程序之前,我不知道是否先前設置了一個值,直到我檢查NSUserDefaults。 –