【问题标题】:How to delete a specific NSUserActivity search index?如何删除特定的 NSUserActivity 搜索索引?
【发布时间】:2016-04-11 09:16:13
【问题描述】:

我使用NSUserActivity 来索引用户活动以进行搜索。我找到了删除特定NSUserActivity 的解决方案,将CSSearchableItemAttributeSetrelatedUniqueIdentifier 分配给NSUserActivity

let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeContact as String)
attributeSet.relatedUniqueIdentifier = objectId

let activity = NSUserActivity(activityType: Employee.domainIdentifier)
activity.title = name
activity.userInfo = userActivityUserInfo
activity.keywords = [email, department]
activity.contentAttributeSet = attributeSet

然后使用删除它

[[CSSearchableIndex defaultSearchableIndex] 
deleteSearchableItemsWithIdentifiers: objectId completionHandler:^(NSError *deletionError) {  
        if (deletionError) {  
            NSLog(@"Could not delete items from the search index with error %@", deletionError);  
        }  
    }]; 

我不知道这是否是一个正确的解决方案。您有更好的解决方案来删除特定的NSUserActivity 搜索索引吗?

【问题讨论】:

  • 你可以试试deleteSearchableItemsWithIdentifiersdeleteSearchableItemsWithDomainIdentifiers 然后读吗?
  • @Tj3n 哦,这是我目前的解决方案,一票给你。抱歉,因为我错过了代码中的删除方法。我将编辑上面的代码。我的问题是,它有其他解决方案来删除使用 NSUserActivity 方法,而不是将 NSUserActivity 链接到 CSSearchableItemAttributeSet 并删除使用 Core Spotlight 方法?
  • 据我所知,没有:/当我想删除一些可搜索的项目时,我总是必须使用这些代码

标签: ios corespotlight nsuseractivity


【解决方案1】:

从 iOS 12 开始,有两种方法可以删除 NSUserActivity

class func deleteAllSavedUserActivities(completionHandler: () -> Void)

class func deleteSavedUserActivities(withPersistentIdentifiers: [NSUserActivityPersistentIdentifier], completionHandler: () -> Void)

文档注释“删除由 Core Spotlight 存储或作为 Siri 快捷方式捐赠的所有用户活动。”

https://developer.apple.com/documentation/foundation/nsuseractivity

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 2014-02-23
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多