首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMetadataQuery by folders iOS

NSMetadataQuery by folders iOS
EN

Stack Overflow用户
提问于 2018-03-02 17:37:38
回答 1查看 713关注 0票数 1

我正在执行一个NSMetadataQuery,我正在获取文件和目录的所有网址。

代码语言:javascript
复制
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的谓词?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 20:31:15

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

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

代码语言:javascript
复制
var iCloudUrl = fileManager.url(forUbiquityContainerIdentifier: nil)
iCloudUrl = iCloudUrl.appendingPathComponent("Documents")

现在,我们要在iCloud Documents文件夹中为folder1执行一次NSMetadataQuery。

我们可以像这样声明一个NSPredicate来访问内容:

代码语言:javascript
复制
let searchPredicate = NSPredicate.init(format: "%K BEGINSWITH %@", argumentArray: [NSMetadataItemPathKey,iCloudUrl.appendingPathComponent("Folder1").path])

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

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

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

2)如果我们想要计算它有多少文件夹和子文件夹,那么

代码语言:javascript
复制
let searchPredicate = NSPredicate.init(format: "%K BEGINSWITH %@ && %K.pathExtension = ''", argumentArray: [NSMetadataItemPathKey,iCloudUrl.appendingPathComponent("Folder1").path,NSMetadataItemFSNameKey])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49066409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档