从设备获取NSUserDefaults plist文件

时间:2011-07-26 10:42:58

标签: iphone objective-c ios plist nsuserdefaults

在模拟器上测试我的应用程序时,我喜欢编辑甚至从iPhone模拟器文件夹中删除应用程序plist文件(包含NSUserDefaults)的功能。这在测试时非常有用(例如,您的应用程序在其中存储字典,但您更改了用于此数据的模型/键,因此需要删除存储的字典)。

是否可以在设备上访问此文件(针对您自己的应用),而不是越狱?

提前致谢

2 个答案:

答案 0 :(得分:5)

该文件位于Library/Preferences。该文件是名为<iOS application target identifier>.plist的二进制plist(在应用程序目标设置中查找Identifier字段),或列出目录内容:

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

您还可以根据某些env变量加载带有#ifdef宏的干净默认值:

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

答案 1 :(得分: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];