【发布时间】:2022-11-23 07:34:15
【问题描述】:
我找到了this article about watching for changes,并尝试正确地跟进。我的调度源已创建,但我从未收到任何事件。
为了确保我得到任何东西,我确保设置了eventMask = .all。
override func viewDidAppear() {
super.viewDidAppear()
Task {
self.configurl = await self.openfile(forkey: self.keybookmarkconfig)
if let url = self.configurl {
print("creating filehandle for \(url.absoluteString)")
self.configfilehandle = try FileHandle(forReadingFrom: url)
print("creating dispatch source to watch \(url.absoluteString)")
self.source = DispatchSource.makeFileSystemObjectSource(
fileDescriptor: self.configfilehandle.fileDescriptor,
eventMask: .all,
queue: DispatchQueue.main
)
print("setting event handler for dispatch source")
self.source.setEventHandler {
print("config file changed")
}
print("done with watcher setup")
}
}
}
我尝试以多种方式更新文件。我在 BBEdit 和 TextEdit 中编辑/保存了它,但是由于关于这些类型的编辑器如何删除/重新创建文件的警告,我也尝试使用 vim 从命令行编辑它。我什至做过echo "test" >> myfile.txt。但是我的事件处理程序中从未收到任何事件。我在每次测试之间重新启动了我的应用程序,所以我有一个新的文件句柄。
知道为什么我没有收到任何事件回调吗?
【问题讨论】:
标签: swift filesystems