簡體   English   中英

如何從 Spotlight 索引和取消索引 NSUserActivities

[英]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 中刪除活動?

我只發現了一件事:在CSSearchableAttributeSetdomainIdentifier屬性的蘋果文檔中,聽起來您應該使用此屬性來刪除NSUserActivity

指定域標識符以將項目組合在一起並便於從索引中刪除項目組。 例如,要刪除用戶活動,您可以在 NSUserActivity object 的 contentAttributeSet 屬性上設置此屬性,然后在 default() 上調用 deleteSearchableItems(withDomainIdentifiers:completionHandler:)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM