0

私はこれについてずっとグーグルで調べましたが、解決策を見つけることができませんでした:標準の NSMutableDictionary writeToFile メソッドを使用していますが、辞書に「thumbnailURL」キーを含む複数のアイテムがある場合、失敗し続けますが、次の場合は失敗しませんこの特定のキーの使用をコメントアウトし、残りはすべて残します...私のdictには、「タイトル」キーと「サムネイルURL」キーの2つのNSStringを含む他のNSMutableDictionariesが含まれています。キーはすべて NSString です。

最初、dict は空なので、単純に追加します。

NSMutableDictionary* d = [NSMutableDictionary dictionary];
NSMutableDictionary* entry = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                       [thumbnailURL absoluteString], @"thumbnailURL",
                       title, @"title",
                       nil];
[d setObject:entry forKey:guid];
[d writeToFile:path atomically:YES]; // returns YES on first attempt

後で、dict をロードします。

NSMutableDictionary* d = [NSMutableDictionary dictionaryWithContentsOfFile:path];

上記もデバッガに合わせて動作し、保存した項目を見ることができます。次に、guid キーを除いて、前のものと同じ別の項目を追加します。デバッガーは、アイテムがメモリ内の dict オブジェクトに正しく格納されていることを示します。最後に、同じコードで再度保存しようとしましたが、失敗し、writeToFile は NO を返します。

「thumbnailURL」キーをコメントアウトして「タイトル」のみを残すと、動作し、エラーは発生しません...

何か案が?tnx

4

1 に答える 1

0

OK、問題が見つかりました。これは私の側のバグです。保存の間に辞書をロードすると、再度 NSURL に変換し、2 回目の保存で NSString に再変換するのを忘れていました...デバッガーはそれをキャッチしませんでした。 NSURL と NSString の同じサムネイル URL の説明が表示されます...

于 2013-08-18T17:06:11.710 に答える