我知道在iOS上你只能使用 NSMetadataQuery
为iCloud文件。然而,根据苹果公司的 指南你还可以得到 NSMetadataItem
通过手动搜索你想要的文件,用 FileWrapper
:
iOS允许在iCloud内进行元数据搜索,查找文件对应的文件。它只提供了文件元数据查询的Objective-C接口。
NSMetadataQuery
和NSMetadataItem
,以及只支持搜索iCloud的搜索范围。与桌面不同,iOS应用程序的沙盒不能使用元数据类进行搜索。为了搜索您的应用程序的沙箱,您将需要使用
NSFileManager
类。一旦找到匹配的文件,你就可以用你需要的方式访问该文件。您也可以使用NSMedatataItem
类来检索该特定文件的元数据。
然而,我无法找到一种方法来获取该文件的元数据。NSMetadataItem
从iOS沙盒上的本地文件。您可以在iOS沙盒上初始化 NSMetadataItem
但这只在macOS上可用。FileManager
似乎也没有一个API来检索。NSMetadataItem
从它。
我怎样才能得到 NSMetadataItem
对于iOS应用沙盒上的本地文件?
使用 NSMetadataQuery
查询iCloud文件,添加观察者获得通知。
metaDataQuery.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope, NSMetadataQueryUbiquitousDataScope]
NotificationCenter.default.addObserver(self, selector: #selector(self.metadataQueryDidFinishGathering),
name: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: metaDataQuery)
metaDataQuery.start()
func metadataQueryDidFinishGathering(notification: NSNotification) {
let result: [NSMedatataItem] = (notification.object as! NSMetadataQuery).results as! [NSMedatataItem]
// handle result
}