Как удалить определенный поисковый индекс NSUserActivity?

Я использую NSUserActivity индексировать активность пользователя для поиска. Я нашел решение удалить конкретный NSUserActivityназначьте CSSearchableItemAttributeSet с relatedUniqueIdentifier в 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 поисковый индекс?

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

Другие вопросы по тегам