2016-05-12 16 views
1

Ich verwende dieses (ältere) Framework: https://github.com/rastersize/CDEvents um Änderungen im Dateisystem zu verfolgen.CDEvent zugrundeliegende FSEvent Flags immer `isGenericChange`

Aus irgendeinem Grund ist die Flagge immer event.isGenericChange. Auf der FSEvent Ebene wäre dies die kFSEventStreamEventFlagNone (Code 0).

Vielleicht hat das etwas damit zu tun, dass das Framework älter ist und etwas fehlt, was sich geändert hat? Ich bekomme keine Build/Test Warnungen/Fehler (installiert über CocoaPods).

Ich verwende diesen Code über einen Delegaten:

- (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); 
} 

ich alle Aktionen versucht (umbenennen, bearbeiten, löschen, erstellen, ändern Meta-Daten, ändern Rechte, etc.) und es ist immer genericChange.

Antwort

1

Es wurde durch Hinzufügen der kFSEventStreamCreateFlagFileEvents Flag behoben. Weil ich CocoaPods bin mit würde ich lieber nicht den Quellcode so anpassen, anstatt streamCreationFlags:kCDEventsDefaultEventStreamFlags des Vergebens diese manuellen Fahnen mit:

(kFSEventStreamCreateFlagUseCFTypes | 
kFSEventStreamCreateFlagWatchRoot | 
kFSEventStreamCreateFlagFileEvents) 

Vermutung ist es mit einigen radikalen Veränderungen zu tun hat, von Apple irgendwann in der Vergangenheit der Fall war. Ich bekomme jetzt die richtigen Flags und auch den vollständigen Pfad zu einer Datei (nicht nur ihr Verzeichnis).