我正在运行Xcode 6 Beta 5,但自第一次测试以来,这种情况一直在发生.模拟器中的应用程序目录在每次运行后都会被重命名.我花了一段时间来弄明白这一点.我正在使用它来获取doc的dir参考.
NSString *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) lastObject];
NSLog(@"Documents Dir: %@",folder);
Run Code Online (Sandbox Code Playgroud)
现在例如在第一次运行时它将是:
/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/4B10C2E4-A5C3-4C64-93B1-4069FCCB9C46/Documents
现在第二次运行:
/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/7E9EB62D-115A-4092-AD23-CB6BA3E5E10F/Documents
第三轮:
/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/EC8F41E8-52ED-4B10-9808-B3ACC46FC6AA/Documents
这对我的应用程序造成了严重破坏,因为它存储了应用程序中某些文件的路径引用.这不是我的NSLog语句返回不正确的结果,我验证了这是在Finder中发生的事情.它每次都在改变这个名字.有没有人见过这种情况?这是一个我误解的"特征"吗?
我想将图像保存到iPhone的用户域,所以我写下面的代码.
let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
print(path)
Run Code Online (Sandbox Code Playgroud)
它显示如下: /Users/xxx/Library/Developer/CoreSimulator/Devices/1312F880-6BDC-45D2-B3B3-4D2374313C67/data/Containers/Data/Application/A2850237-5E71-4373-81A6-B443032E1951/Documents/
在这种情况下,应用程序ID是 A2850237-5E71-4373-81A6-B443032E1951
问题是,当我再次在模拟器上运行而无需移除APP时,它显示如下: /Users/xxx/Library/Developer/CoreSimulator/Devices/1312F880-6BDC-45D2-B3B3-4D2374313C67/data/Containers/Data/Application/1F9B5B0A-5A6C-4098-BF40-C978C60C93AF/Documents/
在这种情况下,应用程序ID是 1F9B5B0A-5A6C-4098-BF40-C978C60C93AF
因此,虽然我刚刚更新了应用程序并且没有删除应用程序,但是之前和当前安装之间存在应用程序ID差异.为什么会引起它以及如何解决它?
它导致Xcode 7.2,7.1,7.0.它不仅会导致模拟器安装,还会导致实际的设备安装.因此,如果iOS用户从应用商店更新应用程序,将更改应用程序ID,并且还将更改应用程序沙箱,最后用户无法引用其图像.
类似情况:
相关指南:
提前致谢.
似乎我必须坚持道路作为亲戚而非绝对.
我会尝试这种方法,如果我解决了我的问题,我会更新问题.