我知道在iOS上,您只能将NSMetadataItem
用于iCloud文件。但是,根据Apple的guide,您仍然可以通过FileWrapper
手动搜索所需文件来获取NSMetadataQuery
:
iOS允许在iCloud中进行元数据搜索,以查找相应文件的文件。它仅提供文件元数据查询的Objective-C接口
NSMetadataItem
和NSFileManager
,并且仅支持搜索iCloud的搜索范围。与桌面不同,iOS应用程序的沙箱无法使用元数据类进行搜索。要搜索应用程序的沙箱,您需要使用
NSMedatataItem
类以递归方式遍历沙箱文件系统中的文件。找到匹配的文件后,您可以按照所需的方式访问该文件。您还可以使用NSMetadataItem
类来检索该特定文件的元数据。
但是,我找不到从iOS沙箱上的本地文件获取NSMetadataItem
的方法。您可以从文件URL初始化FileManager
,但仅在macOS上可用。 NSMetadataItem
似乎也没有用于从中检索NSMetadataItem
的API。
如何在iOS App Sandbox上获取{{1}}本地文件?
答案 0 :(得分:0)
使用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
}