2017-01-22 5 views
0

NSUserDefaultsからキーを取得する方法はすべて、アプリケーション自体(NSGlobalDomainなど)以外のドメインのキーのヒープを返します。私はちょうど私のアプリが設定したキーと値が必要です。NSUserDefaults:設定したキーのみを取得する方法

私は自分以外のキーを無視することができます(開発中にキーが設定されている可能性があります)他のドメインにキーが衝突する可能性があり、アプリの価値がわかりません。

その他の議論では、というファイルというファイルがアプリに関連付けられていると考えられますが、それほどエレガントではありません。

私のアプリケーションの鍵だけをNSUserdefaultsから得ることができますか?

+0

あなたが必要とするもの(端末、アプリなど)は明確ではありません。アプリをサンドボックス化する場合、他のデフォルトを見ることはできません。 BTWの正しいアプローチは、あなたが必要とするキー(一度起こり、キーを書き換えない)のためにデフォルトを登録し、後でそれらの値を求めることです。 –

+0

開発中に私のアプリでこれをやりたいのですが、私が設定したキーと値だけに興味があります。時間がたつにつれて私はいくつかのキーの使用を変更したり停止したりしています。そのため、私が使用したキーをすべて見たいのです。私はアプリの設定にuserDefaultsを使用しています。テスト中にアプリを起動するたびにログの設定を確認すると便利です。 – Jeff

答えて

0

エレガントなアプローチ

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *bundleIdentifier = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey]; 
NSDictionary *dict = [defaults persistentDomainForName:bundleIdentifier]; 

ファイルのアプローチ:サンドボックスでテスト

NSString *bundleIdentifier = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]; 
NSString *path = [NSString stringWithFormat:@"~/Library/Preferences/%@.plist",bundleIdentifier]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:[path stringByExpandingTildeInPath]]; 
NSArray *keys = [dict allKeys]; 

+0

優れています。私はplistの中のいくつかのシステムを削除するために2行を加えました(少なくとも私のものです): 'NSMutableDictionary * myUserDefaults = [NSMutableDictionary dictionaryWithDictionary:dict]; [myUserDefaults removeObjectsForKeys:@ [@ "CaptionDWA_CaptionBehavior"、@ "NSWindow Frame NSFontPanel"]]; ' – Jeff

関連する問題