EonilFSEvents

Eonil 2018 年维护。2019 年维护。

Build Status

可以直接在 Swift 中使用 FSEvents,但仍然需要许多样板代码和细微的转换。

该库提供了主要忠实于 Swift 5 定制的 FSEvents 功能的包装器。

快速入门

导入。

import EonilFSEvents

启动。

try EonilFSEvents.startWatching( 
    paths: ["/"],
    for: ObjectIdentifier(self),
    with: { event in print(event) })

停止。

EonilFSEvents.stopWatching(for: ObjectIdentifier(self))

使用完整功能

创建一个 EonilFSEventStream,将其调度到 GCD 队列,然后启动。

let s = try EonilFSEventStream(pathsToWatch: paths,
    sinceWhen: .now,
    latency: 0,
    flags: [],
    handler: handler)
s.setDispatchQueue(DispatchQueue.main)
try s.start()

使用后,通过停止和使无效(取消调度)来反初始化。

s.stop()
s.invalidate()

一旦最后一个强引用被移除,流将被销毁。

注意事项

在 Xcode 中,AppKit 应用程序默认配置为使用沙盒。沙盒应用程序无法访问其容器之外的文件。 因此,它可能看起来无法接收容器之外的文件系统事件。 要接收容器之外的文件系统事件,您应该关闭沙盒。

目前,xcodebuild 在包的依赖关系解析上失败。 我不知道为什么。 似乎 Xcode 在这方面存在一些问题。 要解决这个问题,只需显式设置 SYMROOT。 请参阅 test.zsh 文件了解如何设置它。

鸣谢 & 许可证

版权所有 (c) 2018 Hoon H., Eonil。 保留所有权利。 此库的使用已根据“MIT 许可证”授予。