在iOS应用沙盒上获取本地文件的NSMetadataItem。

问题描述 投票:5回答:1

我知道在iOS上你只能使用 NSMetadataQuery 为iCloud文件。然而,根据苹果公司的 指南你还可以得到 NSMetadataItem 通过手动搜索你想要的文件,用 FileWrapper:

iOS允许在iCloud内进行元数据搜索,查找文件对应的文件。它只提供了文件元数据查询的Objective-C接口。NSMetadataQueryNSMetadataItem,以及只支持搜索iCloud的搜索范围。

与桌面不同,iOS应用程序的沙盒不能使用元数据类进行搜索。为了搜索您的应用程序的沙箱,您将需要使用 NSFileManager 类。一旦找到匹配的文件,你就可以用你需要的方式访问该文件。您也可以使用 NSMedatataItem 类来检索该特定文件的元数据。

然而,我无法找到一种方法来获取该文件的元数据。NSMetadataItem 从iOS沙盒上的本地文件。您可以在iOS沙盒上初始化 NSMetadataItem 但这只在macOS上可用。FileManager 似乎也没有一个API来检索。NSMetadataItem 从它。

我怎样才能得到 NSMetadataItem 对于iOS应用沙盒上的本地文件?

metadata sandbox nsfilemanager foundation nsmetadataquery
1个回答
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
}
© www.soinside.com 2019 - 2024. All rights reserved.