Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 使用NSMetadataQuery搜索文件什么都不做大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我尝试使用NSMetadataQuery和NSPredicate来搜索文件.经过几个小时的尝试和寻找解决方案(我是 swift的新手),我有一个小例子.它编译得很好,但结果为零.我尝试了不同的谓词,但最后metadataQuery.resultCount始终为0. 任何人都知道什么是错的? class AppDelegate: NSObject, NSApplicationDelegate { v
我尝试使用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)

大佬总结

以上是大佬教程为你收集整理的swift – 使用NSMetadataQuery搜索文件什么都不做全部内容,希望文章能够帮你解决swift – 使用NSMetadataQuery搜索文件什么都不做所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: