【发布时间】:2014-10-03 16:44:36
【问题描述】:
我正在运行 Xcode 6 Beta 5,但这从第一个 Beta 版开始就一直在发生。每次运行后,我在模拟器中的应用程序目录都会不断重命名。我花了一段时间才弄清楚这一点。我正在使用它来获取文档的目录参考。
NSString *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) lastObject];
NSLog(@"Documents Dir: %@",folder);
例如,在第一次运行时,它将是:
/Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/4B10C2E4-A5C3-4C64-93B1-4069FCCB9C46 /文件
现在第二次运行是:
/Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/7E9EB62D-115A-4092-AD23-CB6BA3E5E10F /文件
第三轮:
/Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/EC8F41E8-52ED-4B10-9808-B3ACC46FC6AA /文件
这对我的应用程序造成了严重破坏,因为它存储了应用程序内某些文件的路径引用。并不是我的 NSLog 语句返回了不正确的结果,我验证了 Finder 中发生的情况。每次都改名字。有人见过这种情况吗?这是我误解的“功能”吗?
【问题讨论】:
-
永远不要存储绝对路径。仅存储相对于 Documents 文件夹的路径。
-
嗯,我想这是一个教训。
-
每当用户更新到您的应用的较新版本时,路径也会在用户的设备上发生变化。
-
我发现即使应用程序没有退出(我的意思是强制退出)并被置于后台,值也可能改变:)
-
NSString *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];如何被视为“绝对路径”?看起来很动态,我错过了什么?
标签: ios objective-c xcode ios8 xcode6