1

使用在 iOS 10 上运行的 xcode 8。尝试组合一个超级简单的 NSMetadataQuery。腰围差不多一天了。设法让它进行查询,但它没有从我的 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 文档。

我的 plist 是这样说的...

<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>

我在这里想念什么?

4

1 回答 1

0

好的,

经过大量搜索,我想我找到了答案。这个应用程序创建了自己的 iCloud 子目录 [同名],如果我将文件复制到其中;我可以看到他们。有用。

但是我只能看到文件而不是目录,这似乎是 NSMetadataQuery 的限制。

我的调查还把我带到了扩展,其中似乎有六个或更多。这些 UIDocument 扩展名之一,但等等,它也只提供单个文件。更好的是,我可以在我的通用 icloud 帐户中看到文件夹,发布了一些适用于此处的代码SO 问题

有一种方法可以识别自定义代码以打开特定文件类型,我遵循并完成了本教程。

iOS 扩展:文档提供者教程

它也很好用,如果此链接断开,请用谷歌搜索。但这是一个有效的文件;我想要一个文件夹。

也许这就是答案。但它并不理想。

于 2016-10-09T07:40:24.013 回答