FileManager.url(for:in:appropriateFor:create:) 中的 appropriateFor 参数是什么?

What is the appropriateFor parameter for in FileManager.url(for:in:appropriateFor:create:)?

Apple's instructions for creating a temporary URL就是要用FileManager.url(for:in:appropriateFor:create:)。 他们给出的例子是(重写在Swift 3):

let desktopURL = URL(fileURLWithPath: "/Users/Noah/Desktop/")
do {
    let temporaryDirectoryURL = try FileManager.default.url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: desktopURL, create: true)
} catch {
    // handle error
}

文档说 appropriateFor 参数 "determines the volume of the returned URL",但我不明白那是什么意思。这个参数有什么用,我应该如何确定要为其传递的 URL?

你传入的URL用于决定在哪个Volume(挂载的磁盘)上创建临时目录。我怀疑您应该将 URL 传递给驻留在同一卷上的文件或文件夹。

我做了一个实验来理解它。

let document = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
try? FileManager.default.url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: document, create: true)

一个目录出现在我的应用程序的沙箱中: 所以我认为appropriateFor用于确定将在何处创建临时目录

多年后的今天,我遇到了这个问题,但文档现在对此已经很清楚了。我不记得他们以前是,但这是直接来自 the documentation:

的答案

The file URL used to determine the location of the returned URL.

Only the volume of this parameter is used. This parameter is ignored unless the directory parameter contains the value FileManager.SearchPathDirectory.itemReplacementDirectory and the domain parameter contains the value userDomainMask.