看了苹果关于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];

}

Spotlight简单介绍及使用相关推荐

  1. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  2. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  3. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...

  4. 2021年大数据ELK(二):Elasticsearch简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...

  5. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  6. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  7. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

  8. dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

  9. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

最新文章

  1. python数据挖掘主要特点_【Python数据挖掘】第六篇--特征工程
  2. 【Java设计模式】单例模式
  3. RouterOS DNS劫持 -- A记录
  4. 第三章:3.5 傅里叶变换
  5. linux设置免密ssh,Linux终端设置免密登陆ssh(以 XShell 为例)
  6. Android Studio(7)---从模板添加代码
  7. 机器学习-吴恩达-笔记-6-应用机器学习的建议
  8. 谷歌新旗舰Pixel 3让AI帮你接电话:你是谁?为什么来电?
  9. ASP.NET 实践:锁定 ASP.NET 配置设定
  10. 驱动人生官网服务器维护,驱动人生在线检测服务 驱动检测更新更加方便
  11. win10电脑360调用不到JAVA,windows10系统下360浏览器打不开网页如何解决
  12. 3分钟教你如何用代码向心爱的女生表白
  13. IntelliJ IDEA在Mac下格式化代码快捷键与失效原因
  14. 大恒相机图像采集 linux+python
  15. XBL用于防治botnet
  16. 计算机网络管理员模拟,计算机网络管理员(三级)技能模拟测试
  17. Javascript中得到中英文混合字符串的长度
  18. 如何彻底删除右键新建中的PowerDesigner选项?
  19. 好友克隆显示服务器繁忙,好友克隆服务器繁忙
  20. 临泉新汇英高中2021高考成绩查询,昨天,临泉这所学校为学子们举行了这种仪式.........

热门文章

  1. Day01 数据仓库项目简介
  2. 1 - 6 电容元件
  3. ADB、Fastboot、Recovery、Hboot、Bootloader介绍
  4. glPixelStorei 详解 包括像素传输
  5. 两次腾讯面试都挂二面了,分享下苦逼面试经历
  6. HTML网页js超简单实现图片轮播
  7. 计算机视觉-基于BOW的图像检索
  8. oracle 数据库名/数据库实例名[SID]/数据库域名/全局数据库名
  9. unity3D暴力街区射击大战游戏截图
  10. postfix + dovecot