首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMetadataQuery不返回任何内容

NSMetadataQuery不返回任何内容
EN

Stack Overflow用户
提问于 2016-10-06 03:17:04
回答 1查看 697关注 0票数 1

使用运行在iOS 10上的Xcode8。试图组合一个超级简单的NSMetadataQuery。已经花了差不多一天的时间了。我设法让它执行一个查询,但是它没有从我的iCloud返回任何文档,none。

代码语言:javascript
复制
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是这样说的。

代码语言:javascript
复制
<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>

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-10-09 15:40:24

好的,

经过多次搜索,我想我找到了答案。这个应用程序创建了自己的同名iCloud子目录,如果我将文件复制到其中,我可以看到它们。它起作用了。

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

我的调查还将我带到了扩展,似乎有六个或更多。其中之一的UIDocument扩展,但等等,这也只提供单一的文件。更好的是,我可以在我的通用icloud账户中看到文件夹,发布了一些在这里工作的代码SO question

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

iOS Extensions: Document Provider Tutorial

它的工作也很好,谷歌它,如果这个链接断开。但这实际上是一个单独的文件;我想要一个文件夹。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39881990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档