加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 02:25:03 所属栏目:百科 来源:网络整理
导读:我尝试使用NSMetadataQuery和NSPredicate来搜索文件.经过几个小时的尝试和寻找解决方案(我是 swift的新手),我有一个小例子.它编译得很好,但结果为零.我尝试了不同的谓词,但最后metadataQuery.resultCount始终为0. 任何人都知道什么是错的? class AppDelegat
我尝试使用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,object: nil)
}

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

谢谢!

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读