[英]How to get custom value back from Spotlight with CSCustomAttributeKey
[英]How to index and deindex NSUserActivities from Spotlight
我正試圖圍繞NSUserActivity
進行思考,但我並不完全確定如何正確使用它們。 我已經正確設置了我的 NSUserActivity,如下所示:
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributeSet.title = "Title"
attributeSet.contentDescription = "Description"
let activity = NSUserActivity(activityType: ActivityType.activity.rawValue)
activity.persistentIdentifier = ActivityIdentifier.activity.rawValue
activity.title = "Title"
activity.requiredUserInfoKeys = ["Key"]
activity.userInfo = ["Key": data]
activity.isEligibleForSearch = true
activity.contentAttributeSet = attributeSet
self.userActivity = activity
self.userActivity!.becomeCurrent()
現在,活動通過becomeCurrent()
方法獲得索引。 當我單擊 Spotlight 中的活動時,一切正常,並且可以使用userInfo
屬性恢復活動。
但是,一旦使用(恢復)活動,如何從 Spotlight 中刪除活動? 在這篇文章中,用戶建議使用deleteAllSavedUserActivities(completionHandler:)
工作但我不能使用,因為我不想刪除所有活動或deleteSavedUserActivities(withPersistentIdentifiers:completionHandler:)
不起作用。 對於第一種方法,文檔說明如下,但是對於第二種方法,這並不適用:
刪除 Core Spotlight 存儲的所有用戶活動...
相反,我可以使用 Core Spotlight API 對活動進行索引,如下所示:
let item = CSSearchableItem(uniqueIdentifier: ActivityIdentifier.activity.rawValue, domainIdentifier: "DomainID", attributeSet: attributeSet)
CSSearchableIndex.default().indexSearchableItems([item]) { error in
if error != nil {
print(error!)
} else {
print("successfully indexed item")
}
}
並使用deleteSearchableItems(withIdentifiers:completionHandler:)
方法刪除它們。 問題是,我必須設置我的attributeSet
集的relatedUniqueIdentifier
,然后一旦我嘗試恢復活動( 關於帖子), userInfo
將為空。
那么我應該怎么做,我應該同時使用 Core Spotlight 和 NSUserActivity 並使用CSSearchableItemAttributeSet
來保存數據而不是使用userInfo
(為什么要這樣做?,他們為什么要添加 userInfo 呢?)或者我應該索引我的活動而不Core Spotlight,但在這種情況下如何從 Spotlight 中刪除活動?
我只發現了一件事:在CSSearchableAttributeSet
的domainIdentifier
屬性的蘋果文檔中,聽起來您應該使用此屬性來刪除NSUserActivity
指定域標識符以將項目組合在一起並便於從索引中刪除項目組。 例如,要刪除用戶活動,您可以在 NSUserActivity object 的 contentAttributeSet 屬性上設置此屬性,然后在 default() 上調用 deleteSearchableItems(withDomainIdentifiers:completionHandler:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.