Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Swift脚本获取macOS iCloud驱动器中的当前目录?_Swift_Macos - Fatal编程技术网

如何使用Swift脚本获取macOS iCloud驱动器中的当前目录?

如何使用Swift脚本获取macOS iCloud驱动器中的当前目录?,swift,macos,Swift,Macos,我编写Swift脚本来解决使用macOS时的小任务。 我现在需要在脚本中获取当前目录 以下程序将当前目录的路径作为字符串,并将其转换为URL // myscript.swift import Foundation let path = FileManager.default.currentDirectoryPath let url = URL(string: path) print("path:", path) print("url :", url)

我编写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驱动器目录下运行这个程序时,我无法获取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驱动器中的文件

谢谢


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

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

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