2

NSUserActivity用来索引用户活动以进行搜索。我找到了一个解决方案来删除一个特定的,NSUserActivity分配一个CSSearchableItemAttributeSet到:relatedUniqueIdentifierNSUserActivity

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搜索索引吗?

4

1 回答 1

0

从 iOS 12 开始,有 2 种删除方法NSUserActivity

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

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

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

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

于 2019-05-15T17:37:06.893 回答