2013-12-14 1 views
2

У меня есть приложение OSX, которое использует NSDocument и autosaves inplace - все работает хорошо. Иногда пользователь сохраняет документ в папку с синхронизацией Dropbox, и есть вероятность, что документ будет обновлен (через Dropbox), пока он все еще будет открыт в приложении. Вопрос в том, как я это обнаружить и загрузить документ с диска (или, по крайней мере, информировать пользователя.)Обнаружение перезаписанного файла с использованием NSDocument

Благодарности

+0

Я не использовал 'NSDocument', поэтому для этого может быть встроенный метод, однако если бы я не предложил использовать дескриптор файла GCD для мониторинга файла для изменений. –

+0

FSEvents - это API, используемый для просмотра изменений файлов. –

+0

@GradyPlayer: FSEvents - это API, используемый для просмотра изменений * каталога *. Затем вам нужно будет найти, какие файлы (ы) изменили сами. Использование kevent (завернутое в CFFileDescriptor или, возможно, GCD) позволит вам контролировать один файл. Недостатком является то, что вы подверглись бы ограничению дескриптора файла - если бы пользователь открыл, скажем, 200 файлов, вы не смогли бы просмотреть их все и могли бы начать бросать ошибки. –

ответ

4

NSDocument реализует протокол NSFilePresenter из коробки. Вы можете переопределить presentedItemDidChange для автоматического обновления при изменении файла.

Смежные вопросы