swift - 如何使用 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"
推荐阅读
- rust - 为什么结构实例化的花括号不定义范围?
- javascript - Chart.js 版本 3:如何为刻度线和网格线设置不同的颜色
- python - PyTorch 和 TensorFlow >= 2.0 均未找到。模型将不可用,只能使用标记器、配置和文件/数据实用程序
- javascript - × Unhandled Rejection (Error):抛出了跨域错误。React 无法访问开发中的实际错误对象
- properties - Yii2 向应用程序添加属性
- css - wordpress字体突然变了,不知道为什么
- amazon-web-services - 无法对齐导入的 S3 存储桶 terraform 配置
- scala - 如何使用`.saveAsTable()`将查询结果保存到Dataproc集群中的Hive表中?
- python - 使用 IQR 删除异常值会给出错误“对象类型系列没有名为 1 的轴”
- java - 为什么 BoundService 为空?