2016-05-12 2 views
1

J'utilise cette structure (plus ancienne): https://github.com/rastersize/CDEvents pour suivre les changements sur le système de fichiers.CDEvent les drapeaux FSEvent sous-jacents toujours `isGenericChange`

Pour une raison quelconque, le drapeau est toujours event.isGenericChange. Au niveau FSEvent, ce serait le kFSEventStreamEventFlagNone (code 0).

Peut-être que cela a quelque chose à voir avec le fait que le framework soit plus ancien et qu'il manque quelque chose qui a changé? Je ne reçois aucun avertissement/erreur de construction/test (installé via CocoaPods).

J'utilise ce code par un délégué:

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

J'ai essayé toutes les actions (renommer, modifier, supprimer, créer, modifier les méta-données, les droits de modification, etc.) et il est toujours genericChange.

Répondre

1

Correction du problème en ajoutant le drapeau kFSEventStreamCreateFlagFileEvents. Parce que j'utilise CocoaPods je préfère ne pas ajuster le code source donc au lieu de placer ces drapeaux streamCreationFlags:kCDEventsDefaultEventStreamFlags à l'aide manuelle:

(kFSEventStreamCreateFlagUseCFTypes | 
kFSEventStreamCreateFlagWatchRoot | 
kFSEventStreamCreateFlagFileEvents) 

Devinez qu'il a à faire avec des changements radicaux Apple a fait quelque temps dans le passé. J'obtiens maintenant les drapeaux corrects et aussi le chemin complet d'un fichier (pas seulement son répertoire).