Проверка наличия документа в контейнере iCloud

Я использую NSMetadataQuery, чтобы определить, существует ли документ в моем контейнере приложения iCloud, даже если файл не был загружен локально.

Может ли NSFileCoordinator с NSFilePresenter сделать то же самое? Проверка того, что файл существует, даже если он по-прежнему недоступен локально?

Обновление: я некоторое время использовал NSMetadataQuery, чтобы определить, существует ли файл в моем универсальном контейнере. Но, по крайней мере, тестирование на 10.8.2, это не всегда работает. Я получаю много ложных срабатываний на наличие файлов.

Я знаю, что другие использовали файловых координаторов. Есть ли у кого-нибудь какое-либо мнение по этому поводу, или даже лучше указать мне пример того, как их использовать?


person the Reverend    schedule 26.06.2012    source источник


Ответы (1)


отправка сообщения методу coordinateReadingItemAtURL:options:error:byAccessor: NSFileCoordinator и выполнение того, что вы хотите, в блоке byAccessor с его urlToUse (и проверка результатов ошибки путем просмотра ошибки) должны работать, если у вас уже есть действительный URL-адрес элемента в iCloud, который вы использовали. пытается запросить использование NSMetadataQuery.

и вы можете создать NSFileCoordinator с помощью initWithPresenter:nil, и это будет работать для всех файловых презентаторов.

поэтому кажется, что это вопрос того, знаете ли вы уже URL-адрес элемента, который ищете. использование NSMetadataQuery, очевидно, будет более удобным с точки зрения создания NSPredicate, которое вернет вам перечисление элементов в вашем универсальном контейнере iCloud, когда вы еще не знаете их URL-адреса.

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

person john.k.doe    schedule 26.09.2012