Warm tip: This article is reproduced from serverfault.com, please click

其他-iOS documentDirectory在Swift en Objective-C版本的应用程序之间存在差异

(其他 - iOS documentDirectory different between Swift en Objective-C version of app)

发布于 2020-11-28 15:42:59

我有一个用Objective-c编写的旧应用,正在用SwiftUI重写。

我注意到两个版本的文件文件夹路径不同,因此无法在较新版本中使用旧版本中的数据。

这些是路径:

~/Library/Developer/CoreSimulator/Devices/8E2C0F01-ABF3-4414-A01A-EE4FFEF8D187/data/Containers/Data/Application/8B5EB288-0240-4437-8F20-F58521D12EAD/Documents/
~/Library/Developer/CoreSimulator/Devices/8E2C0F01-ABF3-4414-A01A-EE4FFEF8D187/data/Containers/Data/Application/0C07AF64-EA56-473E-B30A-D1FCE22E2F65/Documents/

如你所见,第一部分是相同的,但第二部分Containers/Data/Application是不同的。

我在Objective-C中设置路径如下:

NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

在Swift中:

let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

他们为什么不相等,我在这里想念什么?

Questioner
koen
Viewed
11
matt 2020-11-29 00:01:07

没有问题。iOS应用已沙箱化。每个应用程序都有自己的专用文件夹层次结构。实际上,即使在同一应用程序的运行之间,层次结构的路径也可以更改。像这样的表达

Application/8B5EB288-0240-4437-8F20-F58521D12EAD

只是此应用程序特定运行的当前沙箱路径。你不能保存它或将它用于任何用途,因为同一沙箱下次可能具有不同的路径。