0

NSDictionaries の NSArray をドキュメント フォルダーに書き込もうとしています。私は使用しています

BOOL fileWritten = [favoritesArray writeToFile:fullFileName atomically:NO];
    if (fileWritten == NO) {
        NSLog(@"Writing favoritesFileFailed");
    }

上記はNOを返し続けます。なぜこれが書かれないのか、何か考えはありますか?本当に奇妙なのは、この同じコードが数日前に機能していたことです。writeToFile は複雑なオブジェクトを処理できないという記述を読みました。NSDictionary は writeToFile で保存できないオブジェクトでしょうか?

4

4 に答える 4

0

まず、fullFileName実際にドキュメントディレクトリを指していることを確認します。

次に[NSArray: writeToFile:atomically:]、plistファイルに保存できるデータ型(NSString、NSData、NSDictionary、NSArray)のみを書き込むことができ、それらは再帰的に検証されることを覚えておいてください。

于 2012-06-19T14:35:18.507 に答える
0

あなたがカスタムオブジェクトを持っているなら、私はいくつかのNSCodingマジックを行い、それからあなたは使用することができます[NSKeyedArchiver archivedDataWithRootObject:favoritesArray]

NSCoding そのため、その配列内の各カスタム クラスがReferenceに準拠しており、それが機能することを確認する必要があります。

于 2012-06-19T14:27:38.933 に答える
0

NSDictionaryそれ自体をファイルに書き込むことは問題ではありませんが、それが保持するオブジェクトは問題になる可能性があります。

NSArray単純なプロパティ リスト関連の I/O メソッドを使用して、クラス、NSDictionaryNSDataNSStringNSNumberNSDateおよびそれらの任意の組み合わせ (辞書の配列など) のオブジェクトを書き出すことができます。

また、既存のファイルを上書きすることはありませんので、確認されましたか?

于 2012-06-19T14:33:19.783 に答える
0

単純なオブジェクトで単純な配列を保存してみてください。おそらく番号しかないもので、問題が解決しないかどうかを確認してください。そうでない場合、配列内のオブジェクトはおそらく別の場所に保存することを検討する必要があります。

に保存しようとしましたNSUserDefaultsか?他のすべてが失敗した場合は、それを試してみませんか?

于 2012-06-19T15:20:17.420 に答える