2009-05-22 9 views
2

私は色、好みの画像などの好みを作ることができるようにします。 これにNSUserDefaultsを使用すると、アプリケーションの最初の起動時に環境設定はありません。だから、好きになる度に好きになるよ。NSUserDefaults:+ resetStandardUserDefaultsメソッドにはどのようなものが適していますか? 「システム設定」はどのように提供できますか?

NSInteger avatarID =(NSInteger)[[NSUserDefaultsUserDefaults] objectForKey:@ "avatar"];

ヌルかどうかを確認してから、自分のシステム環境設定を使用する必要があります。しかし、私はドキュメントでこれを見てきました:+ resetStandardUserDefaults

デフォルトの2つのブランチがどこかに保存されていますか?ユーザーからのものと開発者からのもの

答えて

6

はい、実際とは少し異なります。 NSUserDefaultsにはregisterDefaultsメソッドがあります。このメソッドを使用すると、NSDictionaryの "空の"デフォルト値を指定した値に設定できます。これをあなたのアプリコントローラーの+ initializeメソッドに入れてください。デフォルト値は分かりやすいでしょう。ユーザーのデフォルトオブジェクトが、現在のアプリケーションの起動中に設定したか、またはディスクから読み込んだキーの「実際の」値を検出した場合は、常にregisterDefaultsで指定したものより先行します。 resetStandardUserDefaultsは、共有ユーザーのデフォルトオブジェクトをメモリから削除し、カスタマイズした内容を元に戻します。デフォルト値を指定する必要はありません。

また、プリミティブなNSInteger値にオブジェクトをキャストできないことに注意してください。オブジェクトのポインタのメモリ位置を表す数字になります。 NSUserDefaultのintegerForKey:を使用してプリミティブを直接取得するか、objectForKey:を使用してNSNumberを取得し、integerValueを使用してプリミティブ値を取得します。

+0

Cool。したがって、NSDictionaryではすべてのシステムデフォルトを設定します。ユーザーがそれらを変更したいときに、standardUserDefaultsオブジェクトを取得すると、objectForKey:...の呼び出しによってユーザーのデフォルト値が返され、そのキーが存在しない場合は、その辞書からオブジェクトが取り出されます。それともそれ以外の方法ですか? – Thanks

+1

本質的に、そうです。 NSUserDefaultsは、実際には、グローバルシステム環境設定、起動引数、特別に追加したカスタムドメインなど、複数の検索ドメインを調べます。しかし、ほとんどの場合、そのように考えることができます。ユーザーの設定を探し、存在しない場合はデフォルトディクショナリから値を返します。 –

+0

あなたは、アプリケーションデリゲートの+ initializeメソッドを意味しますか?それは正しい場所でしょうか?それとも、それはアプリケーションの中にあるかもしれませんか? – Thanks

関連する問題