首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spotlight进行查询

使用spotlight进行查询
EN

Stack Overflow用户
提问于 2012-01-31 21:04:35
回答 1查看 448关注 0票数 0

我正在为LEOPARD (10.5)做一个小项目,我是Objective-C编程的新手。我已经在网上搜索了一些教程,但我仍然很困惑!我需要使用Leopard的spotlight特性来搜索安装在用户计算机上的每个.app文件。我还需要它的名称,路径和图标。所有查询的数据都必须保存在文本文件中。我该怎么做?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-07 02:23:04

定义查询,并观察查询终止。

代码语言:javascript
复制
- (void)searchApplications {
    NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
    query.predicate = [NSPredicate predicateWithFormat:@"kMDItemContentTypeTree == 'com.apple.application'"];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(queryDidFinish:)
                                                 name:NSMetadataQueryDidFinishGatheringNotification
                                               object:query];

    [query startQuery];
}

在查询终止函数中,遍历结果并提取所需的数据。

代码语言:javascript
复制
- (void)queryDidFinish:(NSNotification *)notification {

    NSMetadataQuery *query = (NSMetadataQuery *)[notification object];

    [query stopQuery];

    NSMutableArray *paths = [NSMutableArray array];

    for(NSMetadataItem *mdItem in query.results) {
        NSString *name = [mdItem valueForAttribute:(NSString *)kMDItemDisplayName];
        NSString *path = [mdItem valueForAttribute:(NSString *)kMDItemPath];
        NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:path];

        [paths addObject:path];
    }

    [query release];

    [paths writeToFile:@"/tmp/applications.txt" atomically:YES];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9079996

复制
相关文章

相似问题

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