使用在iOS 10上运行的xcode 8.尝试将超级简单的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文档的本地文档不感兴趣。
我的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>
我在这里缺少什么?
答案 0 :(得分:0)
确定,
经过多次搜索,我觉得我找到了答案。这个应用程序创建了自己的iCloud子目录[具有相同的名称],如果我将文件复制到其中;我可以看到他们。它有效。
但我只能看到文件而不是目录,这似乎是对NSMetadataQuery的限制。
我的调查也让我接受了扩展,其中似乎有六个或更多。其中一个UIDocument扩展,但等待这也只提供单个文件。更好的是,我可以在我的通用icloud帐户中看到文件夹,发布了一些适用于此处的代码SO question。
有一种方法可以识别自定义代码片段以打开特定的文件类型,我已按照这个文件进行了本教程。
iOS Extensions: Document Provider Tutorial
它也运行良好,如果此链接中断,请谷歌搜索。但这是一个有效的单个文件;我想要一个文件夹。
也许这可能就是答案。但它并不是很理想。