CDEvent 底层 FSEvent 标志总是 `isGenericChange`
CDEvent underlying FSEvent flags always `isGenericChange`
我正在使用这个(较旧的)框架:https://github.com/rastersize/CDEvents 来跟踪文件系统上的更改。
出于某种原因,标志总是 event.isGenericChange
。在 FSEvent
级别,这将是 kFSEventStreamEventFlagNone
(代码 0
)。
也许这与框架较旧并且缺少更改的内容有关?我没有得到任何 build/test warnings/errors(通过 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
。
通过添加 kFSEventStreamCreateFlagFileEvents
标志修复了它。因为我使用的是 CocoaPods,所以我宁愿不调整源代码,而不是使用这些手动标志放置 streamCreationFlags:kCDEventsDefaultEventStreamFlags
:
(kFSEventStreamCreateFlagUseCFTypes |
kFSEventStreamCreateFlagWatchRoot |
kFSEventStreamCreateFlagFileEvents)
我猜这与 Apple 过去某个时候所做的一些根本性改变有关。我现在获得了正确的标志以及文件的完整路径(不仅是目录)。
我正在使用这个(较旧的)框架:https://github.com/rastersize/CDEvents 来跟踪文件系统上的更改。
出于某种原因,标志总是 event.isGenericChange
。在 FSEvent
级别,这将是 kFSEventStreamEventFlagNone
(代码 0
)。
也许这与框架较旧并且缺少更改的内容有关?我没有得到任何 build/test warnings/errors(通过 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
。
通过添加 kFSEventStreamCreateFlagFileEvents
标志修复了它。因为我使用的是 CocoaPods,所以我宁愿不调整源代码,而不是使用这些手动标志放置 streamCreationFlags:kCDEventsDefaultEventStreamFlags
:
(kFSEventStreamCreateFlagUseCFTypes |
kFSEventStreamCreateFlagWatchRoot |
kFSEventStreamCreateFlagFileEvents)
我猜这与 Apple 过去某个时候所做的一些根本性改变有关。我现在获得了正确的标志以及文件的完整路径(不仅是目录)。