我正在使用这个(较旧的)框架:https://github.com/rastersize/CDEvents来跟踪文件系统的更改。
由于某种原因,该标志始终为event.isGenericChange
。在FSEvent
级别,这将是kFSEventStreamEventFlagNone
(代码0
)。
也许这与旧版本的框架有关,并且遗漏了一些变化的东西?我没有得到任何构建/测试警告/错误(通过CocoaPods安装)。
我通过委托使用此代码:
- (void)viewDidLoad {
[super viewDidLoad];
self.events = [[CDEvents alloc] initWithURLs:@[[NSURL URLWithString:@"/Users/username/Desktop/"]]
delegate:self
onRunLoop:[NSRunLoop currentRunLoop]
sinceEventIdentifier:kCDEventsSinceEventNow
notificationLantency:((NSTimeInterval)0.25)
ignoreEventsFromSubDirs:NO
excludeURLs:@[]
streamCreationFlags:kCDEventsDefaultEventStreamFlags];
}
- (void)URLWatcher:(CDEvents *)URLWatcher eventOccurred:(CDEvent *)event {
NSLog(@"Event: %ld", (unsigned long)event.flags);
}
我尝试了所有操作(重命名,编辑,删除,创建,更改元数据,更改权限等),而且始终是genericChange
。
答案 0 :(得分:1)
通过添加kFSEventStreamCreateFlagFileEvents
标志来修复它。因为我正在使用CocoaPods,所以我宁愿不调整源代码,而不是使用这些手动标记放置streamCreationFlags:kCDEventsDefaultEventStreamFlags
:
(kFSEventStreamCreateFlagUseCFTypes |
kFSEventStreamCreateFlagWatchRoot |
kFSEventStreamCreateFlagFileEvents)
猜猜这与苹果过去曾做过的一些激进变革有关。我现在正在获取正确的标志以及文件的完整路径(不仅是它的目录)。