我正在尝试从目录获取文件名。现在,我有两种方法可以访问该位置:一种是通过“打开面板”,通过在“打开包内容”查找器窗口中拖动文件来设置目录,然后手动选择所有文件(结束执行)。其次–通过迭代URL。第二种方法由于以下原因而无法工作:
The file “glyphs” couldn’t be opened because you don’t have permission to view it
我可以从Finder中查看它,也可以通过“打开面板”从同一应用程序中访问...嗯。 我创建如下网址:
print ("filename <\(filename)>, \(isDirectory ? "Directory" : "File")")
let urlf = url.appendingPathComponent(filename, isDirectory: isDirectory)
print( "\(urlf.isFileURL ? "this is a file" : "not a file:") \(urlf)" )
此代码的输出是:
filename <glyphs>, Directory
this is a file: file:///Users/lukasz/Documents/ClanTestDesignSpace/masters/ClnNew-BlackUltraExpandedHigh.ufo/glyphs/
URL正确,我在finder中创建了“将字形复制为路径名”,并将两者进行了比较:除了最后一个斜杠外,它们完全相同。但这不再是目录this is a file
。
无论如何,我将此网址发送给:
let fileURLs = try fileManager.contentsOfDirectory(at: urlf, includingPropertiesForKeys: nil)
始终返回错误。
我试图更改includingPropertiesForKeys: [URLResourceKey.nameKey]
机器人无效。
我检查了沙箱(User Selected File : read/write
)。我还能检查些什么?
答案 0 :(得分:2)
在沙盒应用程序中,无法以编程方式访问任何目录中的文件。在沙盒设置中启用User Selected File : read/write
访问后,您可以使用NSOpenPanel
/ NSSavePanel
来让用户选择他们希望访问的文件,但是如果没有明确的用户交互,您将无法访问您尝试访问的~/Documents
文件夹。