Spotlight简单介绍及使用

看了苹果关于Spotlight的官方文档,根据官方目录,简单阐述以下几个问题:


1:What is Spotlight?


使用metadata来提供一种新的整理和获取电脑文件信息的方式,metadata可以包括文件的作者,或者修改时间,创建时间,关键字或者其他更多信息


2:Where Does Metadata Come From?

一些metadata的信息入时间,类型或者路径名是很简单通过文件能拿到的,一些文件的信息就镶嵌在了文件中,这就需要你提供一个Spotlight importer(一个插件),苹果本身提供了标注你的文件类型,例如RTF, JPEG, Mail, PDF and MP3等,如果你定义自己的文件就需要自己创建metadata importer才能用于Spotlight查询

3:Searching Metadata in your Applications

后面将会有实例

4:Not Only About Search

Spotlight不仅仅只作查询相关,还能提供更多文件相关的信息,例如图片的大小,像素,色彩等,电影的长度,以及更多信息

5:How Does Spotlight Work?

后台获取数据存储索引,当query开始,就开始查询索引匹配文件,如苹果官方图例:



然后开始匹配:指定查询的路径,查询的条件,或者返回时生成的组,排序等等


如果数据发生改变,那么Spotlight就会发送通知出来,程序根据查询结果也就能够立即作出响应

6:Security and Privacy Considerations


可以直接在设置中将不要Spotlight显示的添加进去

Spotlight简单使用

不说了,直接上最简单的例子

- (void)spotlightScan

{

    self.query = [[[NSMetadataQuery alloc] init] autorelease];

    //设置查找条件

    NSPredicate *TypePredict = [NSPredicate predicateWithFormat:@"kMDItemContentTypeTree == 'com.apple.application-bundle'"];

    self.query.predicate = TypePredict;

    //设置查找路径

    NSArray *paths = @[NSHomeDirectory()];

    self.query.searchScopes = paths;

    //添加观察者

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(searchFinished:)

                                                 name:NSMetadataQueryDidFinishGatheringNotification

                                               object:query];

    //判断query

    BOOL result =[query startQuery];

    if (!result) {

        //

    }

}


- (void)searchFinished:(NSNotification *)noti

{

    [query stopQuery];

    for (NSMetadataItem *mdItem in self.query.results) {

        // do something you wanna do

    }

    //move notification

    [[NSNotificationCenter defaultCenter]removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:query];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值