Можем ли мы определить, что изменилось в пакете файлов iCloud?

Я пытаюсь использовать UID-документ с поддержкой iCloud и NSFileWrapper на основе каталогов (пакет файлов), чтобы поддерживать сложное состояние приложения. В моем приложении пользователь может иметь множество различных конфигураций (например, автомобили, в которых есть настройки сидений для каждого потенциального водителя).

Для каждого отдельного состояния я добавляю обычный файл NSFileWrapper в общий пакет файлов.

Запись и чтение моего UID-документа в / из облака работает нормально. Я также получаю уведомления, когда пакет файлов изменился.

Проблема в том, что я не могу понять из уведомления, какие из дополнений или изменений во вложенных файлах (то есть состояниях) вызвали изменение пакета.

Я попытался переопределить presentSubitemDidChangeAtURL в своем пользовательском UIDocument, но это только дает мне URL-адрес пакета. Я также экспериментировал с методом matchContentsOfURL упаковщика файлов, но, похоже, это неправильно, поскольку дочерние упаковщики файлов не имеют "реального" URL.

Комментарии и предложения приветствуются.

1 ответ

Решение

В итоге я решил эту проблему, сравнив дату модификации каждого обычного файла с локально сохраненным NSDate. Когда UIDocument обновляется, я проверяю, какие элементы были изменены после последнего запуска цикла процесса. Необходимо соблюдать осторожность, чтобы локально обновленные файлы больше не обрабатывались.

Другие вопросы по тегам