返回 导航

Swift

hangge.com

Swift - 异步编程库PromiseKit使用详解5(Process的扩展)

作者:hangge | 2018-12-12 08:10
    我们知道 Swift 中使用 Process 可以调用外部命令(仅限于 macOS 应用),而 PromiseKit 同样对 Process 进行了扩展,方便我们开发。

六、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)

回到顶部