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)