ios - NSSearchPathForDirectoriesInDomains 的应用程序 ID 更改每个模拟器在真实设备上运行和更新应用程序

标签 ios iphone xcode swift

我想将图像保存到 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 会发生变化,应用沙箱也会发生变化,最终用户无法引用他们的图片。

类似情况:

相关指南:

提前致谢。

编辑

看来我必须坚持相对而不是绝对的路径。

我会尝试这个方法,如果我解决了我的问题,我会更新问题。

最佳答案

我必须坚持相对路径而不是绝对路径。我还可以通过使用 NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] + "persisted relative path" 获取旧运行图像。

关于ios - NSSearchPathForDirectoriesInDomains 的应用程序 ID 更改每个模拟器在真实设备上运行和更新应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947187/

相关文章:

ios - 在 Swift 中,不能子类泛型 : class Foo<T> : T {}

iphone - 如何在 UIPageViewController 中设置第一页

iphone - 为什么我的 uiwebview 无法正确缩放?

iphone - UITextView滚动问题

iphone - 在 iPhone 设备上自动构建、部署和测试

objective-c - 发布两个 NSNotifications 时的执行顺序

android - HTML5 移动游戏的性能问题

ios - UIView inputView 与 inputViewController

ios - 保持 UITableView 填充在标题上,但在 IOS7 上没有分隔符

swift - 如何使用 swift 在 iOS 中打开定位服务页面?