Документы iCloud Drive, не включенные в результаты NSMetadataQuery
У меня есть базовое приложение для iOS 8, которое перечисляет документы пользователя в контейнере iCloud приложения, а также в iCloud Drive.
Моя проблема заключается в том, что документы, которые находятся непосредственно в iCloud Drive (Finder → Go → iCloud Drive), не включаются в результаты запроса метаданных. Запрос только возвращает результаты в контейнере iCloud приложения Documents
папка.
Я инициализирую запрос следующим образом:
self.query = [NSMetadataQuery new];
self.query.searchScopes = @[NSMetadataQueryUbiquitousDataScope,
NSMetadataQueryUbiquitousDocumentsScope,
NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope]; // iCloud Drive
Права выглядят так:
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>$(TeamIdentifierPrefix)com.my.app</string>
<string>iCloud.com.my.app</string>
</array>
Еще более странно: некоторые документы в iCloud Drive иногда отображаются, но если я переместу их из iCloud Drive и вернусь обратно, они больше не будут отображаться.
2 ответа
Догадаться. Документы iCloud Drive не находятся в контейнере приложения и, следовательно, не включаются в результаты запроса метаданных, поскольку приложение не имеет доступа к внешним файлам.
Как только документ был открыт с помощью средства выбора документов, приложение получает доступ к этому документу, и с тех пор оно будет частью результатов запроса метаданных (пока пользователь не удалит его из iCloud Drive).
Еще одна вещь, которую я заметил: если пользователь перемещает документ из iCloud Drive на Mac, запрос метаданных не получит обновление для iOS. Попытка открыть документ на iOS просто приводит к ошибке (файл не найден).
Я также хочу получить файлы и каталоги, которые находятся непосредственно на диске iCloud. Я обнаружил, что приложение, названное "Document 5", сделало это. Это мой вопрос: список каталогов и файлов iCloud Drive через NSMetadataQuery.