gpt4 book ai didi

swift - 使用 NSMetadataQuery 搜索文件什么都不做

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:22 25 4
gpt4 key购买 nike

我尝试使用 NSMetadataQuery 和 NSPredicate 来搜索文件。经过几个小时的尝试和搜索解决方案(我是 swift 的新手),我有一个小例子。它编译得很好,但结果为零。我尝试了不同的谓词,但最后 metadataQuery.resultCount 始终为 0。有人知道出了什么问题吗?

class AppDelegate: NSObject, NSApplicationDelegate {
var metadataQuery: NSMetadataQuery!
var metadataQueryDidUpdateObserver: AnyObject?
var metadataQueryDidFinishGatheringObserver: AnyObject?


@IBOutlet weak var window: NSWindow!

func applicationDidFinishLaunching(aNotification: NSNotification) {

NSNotificationCenter.defaultCenter().addObserver(self, selector: "initalGatherComplete:", name: NSMetadataQueryDidFinishGatheringNotification, object: nil)

metadataQuery = NSMetadataQuery()
metadataQuery.searchScopes = [NSMetadataQueryIndexedLocalComputerScope]
metadataQuery.predicate = NSPredicate(format: "%K LIKE '*'", NSMetadataItemFSNameKey)
metadataQuery.startQuery()

}

func initalGatherComplete(notification: NSNotification) {
metadataQuery.stopQuery()

let resultCounter = metadataQuery.resultCount
NSLog("%lu", resultCounter)

NSNotificationCenter.defaultCenter().removeObserver(self, name: NSMetadataQueryDidFinishGatheringNotification, object: nil)
}

最后但同样重要的是:当前谓词应该列出所有文件,但最后谓词应该只列出应用程序。创建这样一个谓词的最佳实践是什么?我计划过滤扩展名 .app,但也许有更好的方法?

谢谢!

最佳答案

检查您的 predicate syntax . LIKE 运算符不适用于 NSMetadataQuery 谓词搜索(事实上 NSPredicate 使用了一组非常相似但实际上不同的运算符和行为Spotlight 元数据搜索的上下文。)

NSMetadataQuery 的全局搜索语法只使用等号:

NSPredicate(format: "%K ==[cd] '*'", NSMetadataItemFSNameKey)

关于swift - 使用 NSMetadataQuery 搜索文件什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263182/

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