我想将图像保存到 iPhone 的用户域,因此我编写了以下代码。
let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
print(path)
显示如下:/Users/xxx/Library/Developer/CoreSimulator/Devices/1312F880-6BDC-45D2-B3B3-4D2374313C67/data/Containers/Data/Application/A2850237-5E71-4373-81A6-B443032E1951/文档/
在这种情况下,应用程序 ID 是 A2850237-5E71-4373-81A6-B443032E1951
问题是当我在没有删除应用程序的情况下再次在模拟器上运行时,它显示如下:/Users/xxx/Library/Developer/CoreSimulator/Devices/1312F880-6BDC-45D2-B3B3-4D2374313C67/data/容器/数据/应用程序/1F9B5B0A-5A6C-4098-BF40-C978C60C93AF/文档/
在这种情况下,应用程序 ID 是 1F9B5B0A-5A6C-4098-BF40-C978C60C93AF
所以尽管我只是更新了应用程序并且没有删除应用程序,但之前安装的应用程序 ID 与当前安装的应用程序 ID 存在差异。为什么会导致它以及如何解决它?
它导致 Xcode 7.2、7.1、7.0。它不仅会导致模拟器安装,还会导致实际设备安装。因此,如果 iOS 用户从应用商店更新应用,应用 ID 会发生变化,应用沙箱也会发生变化,最终用户无法引用他们的图片。
类似情况:
- Xcode 6.3 seems to change the path to the Documents directory per app run
- xcode 6.2 create a new simulator path every time when run the app
相关指南:
提前致谢。
编辑
看来我必须坚持相对而不是绝对的路径。
- Application folder name changes every time i run in simulator [duplicate]
- Xcode 6 keeps renaming my app's directory in iOS8 simulator after each run.
我会尝试这个方法,如果我解决了我的问题,我会更新问题。
最佳答案
我必须坚持相对路径而不是绝对路径。我还可以通过使用 NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] + "persisted relative path"
获取旧运行图像。
关于ios - NSSearchPathForDirectoriesInDomains 的应用程序 ID 更改每个模拟器在真实设备上运行和更新应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947187/