- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试使用 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/
我正在尝试使用 NSMetaDataQuery 在 iCloud 中探索我的应用可用的文件。我能够开始查询,但它永远不会结束。这是我的代码。 func report1() { let file
我正在寻找一个可以从 Cocoa API 中使用的类,以在整个系统上执行 Spotlight 搜索。我查看了 NSMetadataQuery 并相信这是这个类,但是我不明白如何做到这一点;主要是NSP
我正在尝试创建一个带有谓词的 NSMetadataQuery。在某一时刻,我可能想要收集 iCloud 在另一时刻可能拥有的所有图像的所有视频。别的什么都不要,就是搜视频或者搜图。不能同时进行。 我创
使用在 iOS 10 上运行的 xcode 8。尝试组合一个 super 简单的 NSMetadataQuery。现在腰部差不多一天了。设法让它进行查询,但它没有从我的 iCloud 返回任何文档,没
我尝试在我的 Mac 上列出我制作的应用程序的所有文件。我使用 NSMetadataQuery 但它不起作用。 代码如下: import Cocoa class ViewController: NSV
我正在尝试一些代码来使用 NSMetaDataQuery 获取基于应用程序路径 在捆绑标识符上。我正在关注在 apple dev 中找到的 hte 示例代码站点:静态 Spotlight 搜索实现。
我无法理解更新如何使用 NSMetadataQuery。 我正在尝试确定文件是否已从 iCloud 下载完成。我最初的查询很清楚地告诉我文件没有下载,我可以开始下载,但如果下载文件需要任何时间,我想设
我正在使用 UIManagedDocument 来管理我在 iCloud 中的文件。像这样设置 NSMetadataQuery 之后: iCloudQuery = [[NSMetadataQuery
我正在尝试执行 NSMetadataQuery在 本地 macOS 文件夹 (不在 iCloud 中)像这样使用 Appkit: let query = NSMetadataQuery()
我正在为我的应用程序制作一个备份管理器(通过 iCloud)。我做了一些测试,基本原理有效。但几天后就停了。我正在使用 NSMetadataQuery 搜索备份文件是否存在。我的备份文件名为例如Bac
原始搜索运行良好,但查询不会注意到对不可见项目的任何更改。 可以再次运行查询,它将找到更新。 查询非零,并且尚未取消订阅聚光灯通知。 这是错误还是预期行为? 我已经在几个不同的项目中对此进行了多次测试
我在聚光灯执行时对本地数据执行查询(NSMetadataQuery),并根据文件的修改日期对结果进行排序,到目前为止一切正常。但我无法理解如何对结果进行分组,例如我希望应用程序在一组中,文档在其他组中
我正在编写一个应用程序,可以在本地和 iCloud 上保存和加载文档。本地工作正常,但我在使用 iCloud 时遇到问题。 文档被保存为一个包 - UIDocument 读取和写入一个 NSFileW
我正在执行 NSMetadataQuery,并获取文件和目录的所有 URL。 func initSearchQuery(){ print("\(logClassName): initSearc
我有以下代码: // Main thread NotificationCenter.default.addObserver( self, selector:#selector(queryDid
默认情况下,NSMetaDataQuery 结果通知在主线程上接收。似乎您必须在主线程上调用 query.startQuery,但您可以使用 [query.setOperationQueue:] 设置
我尝试使用 NSMetadataQuery 和 NSPredicate 来搜索文件。经过几个小时的尝试和搜索解决方案(我是 swift 的新手),我有一个小例子。它编译得很好,但结果为零。我尝试了不同
当我禁用 iCloud 时,我似乎无法让 NSMetadataQuery 工作。我输入了有效的搜索 URL,但它从未注册为完成: //Check for iCloud NSURL *ubiq = [[
我试图限制 NSMetadataQuery 项的范围。我知道有 -setSearchScope: 方法(请参阅 docs ),但它只能让我决定项目将在哪些目录中搜索。 如果我需要从范围中排除一个或多个
在我的 Mac 应用程序中,我有一个 NSMetadataQuery 来查看应用程序的 iCloud 目录。当用户决定从应用程序内启用 iCloud 时,我按以下顺序执行以下操作: 调用 [[NSFi
我是一名优秀的程序员,十分优秀!