2011-07-26 7 views
5

私のアプリケーションをシミュレータでテストするとき、私はiPhone Simulatorフォルダからapps plistファイル(NSUserDefaultsを含む)を編集したり、ゴミ箱にしたりするのが好きです。これはテストするときに便利です(たとえば、アプリがそこに辞書を格納していますが、このデータに使用するモデル/キーを変更するため、保存されている辞書を削除する必要があります)。NSUserDefaults plistファイルをデバイスから取得する

脱獄せずにこのファイルにアクセスすることは可能ですか?ファイルがLibrary/Preferencesである事前

+0

あなたは単にシミュレータ/デバイスからアプリケーションを削除してから、再構築して再度実行することはできますか? – Luke

+0

これはすばやい方法ですが、他のすべてのアプリケーションの状態ファイルやドキュメント/一時フォルダなども削除されます。 – tsakoyan

+0

デバイスからアプリケーションを削除するまで待つと、plistも削除されますか? –

答えて

5

。また、いくつかのenv変数に基づいて#ifdefマクロでクリーンなデフォルトをロードでき

NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject]; 
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; 

:ファイルの名前は<iOS application target identifier>.plist(アプリのターゲット設定の識別子フィールドを探してください)、またはディレクトリの内容を一覧表示してバイナリplistのです:

#ifdef TESTING 
    // use the code provided by tsakoyan below 
#endif 
+0

ドキュメントでは、resetStandardUserDefaultsは「共有ユーザーのデフォルトオブジェクトに加えられた変更を同期してメモリから解放します」というメッセージが表示されます。 – tsakoyan

+0

ありがとうございました。標準の検索リスト "*を持つ新しい共有ユーザーデフォルトオブジェクトですが、正しく理解していれば' registerDefaults'を元に戻すことを意図しています。私は以下のあなたの答えを+1しました。 – Jano

3

おかげであなたはNSUserDefaults値のためだけ気にした場合、これはゴミ箱/グローバルデフォルトに復元する必要があり、そのすべてのカスタムデータ

NSDictionary *userDefDic = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; 
NSArray *keys = [NSArray arrayWithArray:[userDefDic allKeys]]; 
for (NSString *key in keys) { 
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; 
} 
[[NSUserDefaults standardUserDefaults] synchronize]; 
関連する問題