2013-10-21 7 views
11

NSUserDefaultsを使用しているときにXcode 5でosxアプリケーションをプログラミングする際に問題が発生しました。通常は、ユーザーの好みを覚えておくために[[NSUserDefaults standardUserDefaults] setObject:@"This is an object" forKey:@"Test"]を使用します。その後、〜/ Library/Preferences/application.bundle.identifier.plistにplistファイルが生成されます。Xcode 5.0 NSUserdefaultsはplistを削除した後でもまだ設定を保存しています

問題は、私がplistファイルを削除した後も、アプリケーションはまだ私が保存した設定を取得できることです。プロジェクトをクリーンアップしてxcodeを再起動し、派生フォルダ内のファイルを削除しようとしても、plistをクリアする方法はありません。私がこの問題を解決する唯一の方法は、システムを再起動することです。そのため、メモリに何かが格納されていると思います。問題は、これらの保存された設定をどのようにクリアすることができるかです。 (私は、デバッグとテストでコードを手動で追加することで設定をクリアするのは便利ではないと思います。)そして、Xcode 4.xの旧バージョンを試しましたが、そのような問題はありません。 「applicationDidFinishLaunching」下

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
[defaults setObject:@"This is an object." forKey:@"Test"];  
NSLog(@"%@", [defaults objectForKey:@"Test"]); 

:誰もがちょうど新しいココアプロジェクトを作成し、次のようなコードを追加することができ関心を持っています。次に、~/Library/Preferences/application.bundle.identifier.plistを削除してください。 その後、コードに[defaults setObject:@"This is an object." forKey:@"Test"]; の行をコメントし、アプリケーションを再度実行してください。コンソールはまだ表示されます"This is an object." 私の環境はMavericks GMとXcode 5.0(5a1413)です。

これは私にとってただのものではありません。

+0

リンク先のSDKは何ですか?削除した直後に環境設定にアクセスしようとしているときに、削除されたデータを取得すると、データがキャッシュされている可能性があります。 – SevenBits

+2

[NSUserDefaultsはどこにMac OS Xでデータを保存しますか?](http://stackoverflow.com/questions/19234665/where-does-nsuserdefaults-store-data-on-mac-os-x) –

答えて

20

これは、使用しているXcodeのバージョンに直接関係のないOS Xの問題です。 Appleの公式の行は、plistファイルを削除して環境設定を削除することは決して公式にはサポートされていないことであり、最近のOS Xリリースでは、環境設定が変更されるため信頼できません。

優先条件を削除するサポートされている方法は、端末でdefaultsコマンドを使用することで、例えば:

defaults delete application.bundle.identifier 

defaultsコマンドは、優先のある個々の設定を変更/削除することができます。詳細はman defaultsを参照してください。

+0

ありがとうとても! – john

+0

今日もこの問題に遭遇しました。 @CRDのようなデフォルトを削除するときは、バンドル識別子が大文字と小文字を区別していることを確認することをお勧めします。 – Besi

関連する問題