web-dev-qa-db-ja.com

[NSKeyedUnarchiver initForReadingWithData:]:データがNULLです

NSUserDefaultsに保存している設定の中には、すぐに使用できるデフォルトを設定しても意味がない必須ではないオブジェクトがあります。ユーザーがこのオブジェクトの値を設定するまで、NSUserDefaultsからアーカイブを解除すると、アプリは「[NSKeyedUnarchiver initForReadingWithData:]:dataisNULL」というエラーを生成します。私はエラーを無視していますが、それ以外の場合はアプリは正常に動作します。

これを回避するためのベストプラクティスはありますか?これは心配ですか?

16
Michael Mangold

何をアーカイブ解除しているかは正確にはわかりませんが、アーカイブを解除する前に、最初にキーを確認できる場合は、次のようにすることができます。

if ([[[NSUserDefaults standardUserDefaults] dictionaryRepresentation].allKeys containsObject:@"keyForNonMandatoryObject"]) {
        // unarchive the value here
    }
22
rdelmar