如何使用Swift脚本在macOS的iCloud Drive中获取当前目录



我编写Swift脚本来解决使用macOS时的小任务
我现在需要获取脚本中的当前目录。

以下程序将当前目录的路径作为字符串,并将其转换为URL。

// myscript.swift
import Foundation
let path = FileManager.default.currentDirectoryPath
let url = URL(string: path)
print("path:", path)
print("url :", url)

当我在~/Downloads中运行它时,我能够正确地获得当前目录的URL
其他目录也是如此。

$ cd ~/Downloads
$ swift myscript.swift
path: /Users/myname/Downloads
url : Optional(/Users/myname/Downloads)

然而,当我在iCloud Drive目录中运行此程序时,我无法获取URL。

$ cd ~/Library/Mobile Documents/com~apple~CloudDocs/MyScripts
$ swift myscript.swift
path: /Users/myname/Library/Mobile Documents/com~apple~CloudDocs/MyScripts
url : nil

有什么办法解决这个问题吗
我想解决这个问题,以便用我的Swift脚本处理iCloud Drive中的文件。

谢谢。

(我用翻译工具问了这个问题。(

您需要对字符串进行编码,因为它包含一个空格

path = "/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/MyScripts"
if let encoded = path.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
let url = URL(string: encoded) {
print(url)
}

/Users/myname/Library/Mobile%20Documents.com/apple~CloudDocs/MyScripts">

最新更新