Spotlight简单介绍及使用

来源:互联网 发布:淘宝号怎么实名认证呢 编辑:程序博客网 时间:2024/06/05 22:57

看了苹果关于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 = [[[NSMetadataQueryalloc] init]autorelease];

    //设置查找条件

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

   self.query.predicate = TypePredict;

    //设置查找路径

   NSArray *paths = @[NSHomeDirectory()];

   self.query.searchScopes = paths;

    //添加观察者

    [[NSNotificationCenterdefaultCenter] addObserver:self

                                            selector:@selector(searchFinished:)

                                                name:NSMetadataQueryDidFinishGatheringNotification

                                              object:query];

    //判断query

   BOOL result =[querystartQuery];

   if (!result) {

       //

    }

}


- (void)searchFinished:(NSNotification *)noti

{

    [querystopQuery];

   for (NSMetadataItem *mdItemin self.query.results) {

        // do something you wanna do

    }

    //move notification

    [[NSNotificationCenterdefaultCenter]removeObserver:selfname:NSMetadataQueryDidFinishGatheringNotificationobject:query];

}



0 0
原创粉丝点击