2

ユーザーが色や好みの画像などの設定を行えるようにしたいのですが、これにNSUserDefaultsを使用すると、アプリの最初の起動時に設定がなくなりますよね?だから、私が次のような好みを取得したいときはいつでも

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

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

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

4

1 に答える 1

6

はい、でもそれはあなたがしていることとは少し違います。NSUserDefaultsにはregisterDefaults、NSDictionaryの「空白」のデフォルトに指定した値を入力できるメソッドがあります。これをアプリコントローラーの+initializeメソッドに入れると、デフォルト値が適切であることがわかります。ユーザーのデフォルトオブジェクトが、現在のアプリケーションの起動時に設定したか、ディスクからロードしたキーの「実際の」値を見つけた場合、それは常にで提供したものよりも優先されregisterDefaultsます。resetStandardUserDefaults共有ユーザーのデフォルトオブジェクトをメモリから削除し、それに加えたカスタマイズを元に戻します。デフォルト値を指定する必要はありません。

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

于 2009-05-22T15:07:27.973 に答える