首页 > 解决方案 > 在模拟器文件夹中找不到 NSUserDefaults plist

问题描述

我知道还有其他与我相同的问题。但是我认为我已经尝试了所有方法,但我仍然无法在我的模拟器文件夹中找到 NSUserDefaults plist 文件。我确保我获得了模拟器的正确 ID,但我无法找到 NSUserDefaults plist,因为我想准确检查正在保存的值。有谁知道我应该搜索的文件的确切名称是什么?

有关信息,我正在以下路径中搜索:/Users/username/Library/Developer/CoreSimulator/Devices/<device_id>/data/Library/Preferences

有谁知道我做错了吗?我怎样才能找到那个文件?谢谢您的帮助!

标签: iosobjective-cxcodensuserdefaultsplist

解决方案


您可以通过在运行时询问来打印位置。
每次编译和运行模拟器时,文件夹可能与以前不同。

如何编写NSUserDefaults

NSUserDefaults *userdef = [NSUserDefaults standardUserDefaults];
[userdef setObject:@"testString" forKey:@"testkey"];
[userdef synchronize]; //dont forget synchoniszing after setting new objects

如何阅读NSUserDefaults

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSString *result = [defs objectForKey:@"testkey"];
NSLog(@"read out userdefs = %@",result);

如果您还没有设置任何 NSUserDefaults,则没有文件。

否则你在哪里<BundleIdentifier>.<appName>.plist

NSArray *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryFolder = [path objectAtIndex:0];
NSString *appID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
NSString *userdefFile = [NSString stringWithFormat:@"%@/Preferences/%@.plist", libraryFolder, appID];
NSLog(@"NSUserDefaults File located at: %@", userdefFile);

推荐阅读