gpt4 book ai didi

ios - NSMetadataQuery 按文件夹 iOS

转载 作者:行者123 更新时间:2023-11-30 11:43:41 27 4
gpt4 key购买 nike

我正在执行 NSMetadataQuery,并获取文件和目录的所有 URL。

func initSearchQuery(){
print("\(logClassName): initSearchQuery")

searchQuery.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope]

let searchPredicate = NSPredicate.init(format: "%K like '*'", argumentArray: [NSMetadataItemFSNameKey])
searchQuery.predicate = searchPredicate

NotificationCenter.default.addObserver(self, selector: #selector(updateDataWithNotification), name: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: searchQuery)

NotificationCenter.default.addObserver(self, selector: #selector(updateDataWithNotification), name: NSNotification.Name.NSMetadataQueryDidUpdate, object: searchQuery)

searchQuery.enableUpdates()
searchQuery.start()

}

有没有办法执行谓词,只给出目录的 URL?

最佳答案

经过一番研究,我终于解决了我的问题。

假设我们有 iCloud 文件夹的路径

var iCloudUrl = fileManager.url(forUbiquityContainerIdentifier: nil)
iCloudUrl = iCloudUrl.appendingPathComponent("Documents")

现在我们要对 iCloud Documents 文件夹内的folder1 执行 NSMetadataQuery。

我们可以通过声明 NSPredicate 来访问内容:

let searchPredicate = NSPredicate.init(format: "%K BEGINSWITH %@", argumentArray: [NSMetadataItemPathKey,iCloudUrl.appendingPathComponent("Folder1").path])

它将返回文件夹、文件和子文件夹的所有 URL。

1)如果我们只想获取文件,那么 NSPredicate 将如下所示

let searchPredicate = NSPredicate.init(format: "%K BEGINSWITH %@ && NOT %K.pathExtension = ''", argumentArray: [NSMetadataItemPathKey,iCloudUrl.appendingPathComponent("Folder1").path,NSMetadataItemFSNameKey])

2)如果我们想计算它有多少个文件夹和子文件夹

let searchPredicate = NSPredicate.init(format: "%K BEGINSWITH %@ && %K.pathExtension = ''", argumentArray: [NSMetadataItemPathKey,iCloudUrl.appendingPathComponent("Folder1").path,NSMetadataItemFSNameKey])

关于ios - NSMetadataQuery 按文件夹 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49066409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com