基于FSEvent标志的CDEvent总是`isGenericChange`

时间:2016-05-12 17:26:37

标签: objective-c fsevents

我正在使用这个(较旧的)框架: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

1 个答案:

答案 0 :(得分:1)

通过添加kFSEventStreamCreateFlagFileEvents标志来修复它。因为我正在使用CocoaPods,所以我宁愿不调整源代码,而不是使用这些手动标记放置streamCreationFlags:kCDEventsDefaultEventStreamFlags

(kFSEventStreamCreateFlagUseCFTypes |
 kFSEventStreamCreateFlagWatchRoot |
 kFSEventStreamCreateFlagFileEvents)

猜猜这与苹果过去曾做过的一些激进变革有关。我现在正在获取正确的标志以及文件的完整路径(不仅是它的目录)。