отслеживание регистрирует переименование/удаление с FSEvents на Льве

я пытаюсь использовать FSEvents для обнаружения, когда файлы были добавлены/удалены от определенной папки. В настоящий момент я реализовал простую обертку вокруг FSEvents, и он хорошо работает: Я получаю все события.

, НО проблема я имею, теперь то, что, когда я переименовываю файл в Средстве поиска, я ловлю 2 отличных события: первый типа, "переименованного" со старым именем файла и другим с "переименованным" и новым именем файла. Идентификаторы события отличаются между обоими вызовами.

Так, то, как я, как предполагается, знаю, который "переименовал" событие, содержит старое название, и какое событие содержит старый?? Я пытался смотреть в документации, но к сожалению, kFSEventStreamEventFlagItemRenamed не документируется..., это кажется новым у Льва.

пз: единственным путем я мог думать, был: на переименованном событии я проверяю свой UI, чтобы видеть, есть ли у меня предмет, соответствующий пути события. Если так, я отмечаю его для переименования. В противном случае я проверяю, был ли предмет отмечен для переименования, и если так, то я переименовываю его к новому пути события. Но мне действительно не нравится эта идея...

Редактирование: хорошо, я реализовал что-то вдоль строки моей "PS": Я заметил, что при переименовании чего-то, идентификаторы этих 2 событий являются consecutives, так, чтобы с идентификатором события, содержащего новое имя, я мог получить событие, содержащее старое название. Я просто использую немного словаря в своем интерфейсе для хранения идентификаторов и связанных путей в случае "переименованного" события.

Так или иначе, я могу теперь поймать, переименовывают события и даже перемещают события: при перемещении файла это - "переименованное" событие, которое поймано FSEventStream...

, Но, у меня все еще есть одна последняя проблема: удаление. Когда я удаляю что-то, это перемещено в корзину: Я получаю "переименованное" событие. Но проблема состоит в том, что я не получаю второе, переименовывают событие. Только "измененное" событие на.DS_Store файле. Я думаю, что этот файл используется Средством поиска для знания, какие файлы находятся в мусорном ведре, и т.д. Таким образом, я мог проверить модификацию в этот файл, и заставлять последнее "переименованное" событие обнаруживать, что файл был отправлен в мусорное ведро. Но я использую TotalFinder, который использует Асептику, которая изменяет способ, которым Средство поиска хранит.DS_Store файлы: Я больше не получаю "измененный" на этом. Подводить итог: Я не могу обнаружить, когда файл отправляется в мусорное ведро...

Какая-либо идея, как я могу сделать это? Возможно, использовать что-то еще, чем FSEvents для ловли только этого события?

13
задан Citron 4 September 2011 в 18:38
поделиться