Можем ли мы определить, что изменилось в пакете файлов iCloud?
Я пытаюсь использовать UID-документ с поддержкой iCloud и NSFileWrapper на основе каталогов (пакет файлов), чтобы поддерживать сложное состояние приложения. В моем приложении пользователь может иметь множество различных конфигураций (например, автомобили, в которых есть настройки сидений для каждого потенциального водителя).
Для каждого отдельного состояния я добавляю обычный файл NSFileWrapper в общий пакет файлов.
Запись и чтение моего UID-документа в / из облака работает нормально. Я также получаю уведомления, когда пакет файлов изменился.
Проблема в том, что я не могу понять из уведомления, какие из дополнений или изменений во вложенных файлах (то есть состояниях) вызвали изменение пакета.
Я попытался переопределить presentSubitemDidChangeAtURL в своем пользовательском UIDocument, но это только дает мне URL-адрес пакета. Я также экспериментировал с методом matchContentsOfURL упаковщика файлов, но, похоже, это неправильно, поскольку дочерние упаковщики файлов не имеют "реального" URL.
Комментарии и предложения приветствуются.
1 ответ
В итоге я решил эту проблему, сравнив дату модификации каждого обычного файла с локально сохраненным NSDate. Когда UIDocument обновляется, я проверяю, какие элементы были изменены после последнего запуска цикла процесса. Необходимо соблюдать осторожность, чтобы локально обновленные файлы больше не обрабатывались.