SpotLight 初探

iOS

當使用者使用spotlight查詢時,總是有些app會列出內容出來,那又是怎麼樣的小技巧呢?

先把兩個必要的framework包進來

import CoreSpotlight
import MobileCoreServices

接著,準備一個獨立的ID,避免與別的app衝突,通常會使用域名反解,與一個資料陣列,型別為 CSSearchableItem

1
2
let domainID: String = "com.yuaki.informationPlus"
var searchableItems: [CSSearchableItem] = []

接著,

定義每筆資料的屬性設定 (item為資料物件)

1
2
3
4
5
let attributeSet = 
CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributeSet.title = item.title
attributeSet.contentDescription = item.subtitle
attributeSet.contentCreationDate = item.date

接著為這個屬性設定關鍵字,以方便被搜尋

1
2
3
4
// define search keywords
var keywords = item.title.componentsSeparatedByString(" ")
keywords.appendContentsOf(item.subtitle.componentsSeparatedByString(" "))
attributeSet.keywords = keywords

然後把屬性放到 CSSearchableItem裡 再加到陣列中備用

let searchItem = CSSearchableItem(uniqueIdentifier: "Parking", domainIdentifier: domainID, attributeSet: attributeSet)
searchableItems.append(searchItem)

最後加到index裡

1
2
3
4
5
6
7
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(searchableItems) { (error) -> Void in
if error != nil {
print(error?.localizedDescription)
}else{
print("items indexed witch success!")
}
}

醬子就好了!!!

其中uniqueIdentifier可以在 continueUserActivity 的userInfo 被撈取

有沒有很方便呀

附記:index看起來沒有容量的限制,意思是…… 我可以塞爆他嗎?