5

NSUserDefaults の同期メソッドが失敗するのはいつ、なぜですか? 私の値が実際に書き込まれ、NSUserDefaults にコミットされていることを確認する最善の方法は何ですか?

4

3 に答える 3

5

メソッドは、関数のsynchronize上位レベルの API ラッパーですCFPreferencesSynchronize。ドキュメントにはそれについて何もありませんがsynchronize、の結果を返すだけだと思いますCFPreferencesSynchronize。この CoreFoundation 関数は、ホスト (管理者) とネットワーク ベースの設定を同期するために使用できるため、場合によっては失敗する可能性があります。

アプリがそのユーザー ドメイン設定 (現在のユーザーのライブラリ ディレクトリ内) を同期するだけの最も一般的なケースでは、通常、関数は失敗しません。の戻り値を無視しても安全だと思いますsynchronize。しかし、それは私の意見です。

于 2009-10-07T11:28:13.930 に答える
0

私の場合、NSUserDefaultsを誤って使用すると、失敗します。たとえば、独自のオブジェクトを定義し、それをNSUserDefaultsまたはNSDictionaryに配置すると、配置できますが、同期すると失敗します。NSUserDefaultsはすべての種類のオブジェクトをサポートしているわけではないためです。私が知っているように、NSString、NSNumber、NSDictionary....カスタムクラスを作成する方法をグーグルで検索してNSUserDefaultsに保存することができます。

于 2013-01-20T04:25:21.967 に答える
0

場合によっては、私のアプリが特定のキーで nil 値を書き込もうとしていて、それが原因で同期が失敗していました。現在、保存前にその値が nil であることを確認しており、問題は修正されています。

于 2009-10-07T12:54:50.573 に答える