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];

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章