swift で FSEvents をシュッと扱う
swift だけで書いてみたかったので書いてみた
import FileWatch let filewatch = try! FileWatch(paths: ["/path/to/dir"], createFlag: [.UseCFTypes, .FileEvents], runLoop: NSRunLoop.currentRunLoop(), latency: 3.0, eventHandler: { event in if event.flag.contains(.ItemIsFile) { debugPrint(event.path) } })
こういう感じで使う。
FSEvents 周り全く swift で扱いやすくなってないので初期化と、受け取ったイベントの flag 周りを OptionSetType で扱えるようにした。
FSEventStreamCreate
には コールバックの関数を渡す必要があるが Swift - Proper use of CFNotificationCenterAddObserver w/callback - Stack Overflow にあるように、クロージャとかにする必要があある様子。