1

NSUserDefaults (Mac OS X 10.9) を使用して文字列値を保存しています (まだ存在しない場合):

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    _kUpdatesSharedLocationPath = [standardUserDefaults stringForKey:UpdatesSharedLocationPath];
    if (_kUpdatesSharedLocationPath == nil) {
      _kUpdatesSharedLocationPath = [@"/Volumes/My.store"];
      [standardUserDefaults setObject:@"/Volumes/My.store" forKey:VestigaUpdatesSharedLocationPath];
    }
[standardUserDefaults synchronize];

これは正常に機能しており、ファイル システムの下に値を書き込みます。/Users/piotr/Library/Preferences/com.company.MyApp.plist

次に、コンソールからこの値を変更したいと思います (このプロセス中、アプリケーションは実行されていません)。 $ defaults write com.company.MyApp UpdatesSharedLocationPath -string SomeOtherValue

この変更はファイル システムに正しく反映されています。/Users/piotr/Library/Preferences/com.company.MyApp.plist

defaults writeしかし、アプリケーションを再度起動すると、値はコンソールで以前と同じままです。[standardUserDefaults stringForKey:UpdatesSharedLocationPath]値を読み取り、 で検査し[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]ます。さらに、ファイル システムの値( /Users/piotr/Library/Preferences/com.company.MyApp.plist)がコンソールで変更前の値に戻ります。

ドメインなしで値を編集しようとしましたが、同じ結果になりました: $ defaults write UpdatesSharedLocationPath -string SomeOtherValue

さらに、デフォルトでこのキーを削除しようとしました $ defaults delete com.company.MyApp UpdatesSharedLocationPath が、削除前の値で再作成されました。

それは私のアプリのようで、コンソールプログラム[NSUserDefaults standardUserDefaults]を使用して行ったすべての変更を完全に無視しています。defaultsそれは期待される動作ですか?で別のドメインを指定する必要がありますdefaultsか?

によって管理されている値を (アプリの外部から) 変更するにはどうすればよいNSUserDefaultsですか?

4

0 に答える 0