2

NSKeyedUnarchieverでオブジェクトをロードする際に問題が発生しました。
私のオブジェクトはNSDictionaryであり、配列のようないくつかのオブジェクトと私自身のいくつかのオブジェクトが含まれています。それらはすべてNSCodingプロトコルに準拠しています。

オブジェクトを次のように保存します。

[NSKeyedArchiver archiveRootObject:myDictionary toFile:path];

このコードを使用して同じ実行でオブジェクトをロードすると、次のようになります。

myDictionary = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

すべてが機能します。
しかし、アプリを終了して再度開くと、この行でクラッシュします。

誰かが何が悪いのか考えていますか?

4

1 に答える 1

0

保存が成功したことを確認してください。

if (![NSKeyedArchiver archiveRootObject:myDictionary toFile:path])
{
    // saving failed for some reason
    return;
}

また、ファイルを解凍する前に、ファイルが存在することを確認してください。

if ([[NSFileManager defaultManager] fileExistsAtPath:path])
{
    // file does not exist at path (deleted?)
    return;
}
于 2012-12-18T17:20:45.093 に答える