Swift - 异步编程库PromiseKit使用详解5(Process的扩展)
作者:hangge | 2018-12-12 08:10
我们知道 Swift 中使用 Process 可以调用外部命令(仅限于 macOS 应用),而 PromiseKit 同样对 Process 进行了扩展,方便我们开发。
(2)运行结果如下:
(2)由于沙盒权限问题,我们这里在项目设置 -> Capabilities 中,将 App Sandbox 设置为 OFF。
六、Process 的扩展
1,准备工作
我们同样要安装 PromiseKit 库,以及相关的 PMKFoundation 扩展库,具体步骤参考我之前的文章:
2,获取系统时间
(1)下面样例我们在 macOS 应用中调用 /bin/date 命令来获取系统时间,并将结果输出到控制台中:
import Cocoa
import PromiseKit
import PMKFoundation
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
//使用Process调用外部命令
let process = Process()
process.launchPath = "/bin/date"
_ = process.launch(.promise).compactMap { std in
String(data: std.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8)
}.done { stdout in
print(stdout)
}
}
}
(2)运行结果如下:

3,获取文件夹里的文件列表
(1)下面样例与上面不同在于:调用 /bin/ls 命令的时候还带上了 /Users/hangge/Desktop 参数(表示获取 hangge 用户桌面上的所有文件列表)
import Cocoa
import PromiseKit
import PMKFoundation
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
//使用Process调用外部命令
let process = Process()
process.launchPath = "/bin/ls"
process.arguments = ["/Users/hangge/Desktop"]
_ = process.launch(.promise).compactMap { std in
String(data: std.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8)
}.done { stdout in
print(stdout)
}
}
}
(2)由于沙盒权限问题,我们这里在项目设置 -> Capabilities 中,将 App Sandbox 设置为 OFF。
(3)运行结果如下:
全部评论(0)