NSMetadataQuery ничего не возвращает

Использование xcode 8 на iOS 10. Попытка собрать очень простой NSMetadataQuery. Тали почти целый день на это сейчас. Удалось заставить это сделать запрос, но он не возвращает никаких документов из My iCloud, ни одного.

class ViewController: UIViewController {

    var metadataQuery: NSMetadataQuery!
    var metadataQueryDidUpdateObserver: AnyObject?
    var metadataQueryDidFinishGatheringObserver: AnyObject?

    override func viewDidLoad() {
        super.viewDidLoad()


        // Do any additional setup after loading the view, typically from a nib.

        metadataQuery = NSMetadataQuery()

       metadataQuery?.predicate = NSPredicate(format: "NSMetadataItemFSNameKey == '*'")
        metadataQuery?.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope,                                         NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope]

        NotificationCenter.default.addObserver(self, selector: #selector(initalGatherComplete), name: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(queryStarted), name: NSNotification.Name.NSMetadataQueryDidUpdate, object: nil)

        metadataQuery.start()


    }

    func queryStarted(notification: NSNotification) {
        print("queryStarted")
    }

    func initalGatherComplete(notification: NSNotification) {
        metadataQuery.stop()
        metadataQuery.disableUpdates()

        let resultCounter = metadataQuery.resultCount
        print("%lu", resultCounter,metadataQuery.results)

        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: nil)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

Он не возвращает ничего, ни ошибок, ни данных, только пустое пространство. Теперь я да, я не сохранил никаких документов локально, но мне не интересны локальные документы, я хочу документы iCloud.

Мой плист говорит это...

<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.com.ch.cqd.iCloudQuery</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
        <key>NSUbiquitousContainerName</key>
        <string>iCloudQuery</string>
        <key>NSUbiquitousContainerSupportedFolderLevels</key>
        <string>Any</string>
    </dict>
</dict>

Что мне здесь не хватает?

1 ответ

В порядке,

После долгих поисков я думаю, что нашел ответы. Это приложение создало свой собственный подкаталог iCloud [с тем же именем], и если я скопирую в него файлы; Я могу видеть их. Оно работает.

Но я могу видеть только файлы, а не каталоги, кажется, что это ограничение NSMetadataQuery.

Мои исследования также привели меня к расширениям, которых, кажется, полдюжины или больше. Одно из этих расширений UIDocument, но подождите, это также предлагает только отдельные файлы. Лучше я могу видеть папки в моей общей учетной записи icloud, разместил некоторый код ТАК вопрос, который работает здесь.

Есть способ идентифицировать пользовательский фрагмент кода, чтобы открыть файл определенного типа, за которым я следовал и делал этот урок.

Расширения iOS: учебник для провайдеров документов

Это также хорошо работает, Google, если эта ссылка не работает. Но это единственный файл в действии; и я хотел папку.

Может быть, это ответ, возможно. Но это не совсем идеально.

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