Я знаю, что есть несколько сообщений по этой теме, но они сильно отличаются от моего проблема.
Я пытаюсь отобразить свой NSUserActivity
в поиске Spotlight. Для моего NSUserActivity
я использую три API: .isEligibleForHandoff
, .isEligibleForSearch
и .isEligibleForPrediction
.
Моя проблема в том, что моя активность дважды отображается в поиске Spotlight, и что один из результатов предоставляет пустую информацию о пользователе, а другой - нет. Однако Руководство по программированию Apple предлагает:
Используйте следующие стратегии, чтобы избежать дублирования представлений одного элемента:
Если вы используете API-интерфейсы NSUserActivity и Core Spotlight для индексации элемента, используйте одно и то же значение для relatedUniqueIdentifier и uniqueIdentifier, чтобы связать представления элемента.
Но я не думаю, что это даже моя проблема, поскольку я не использую API-интерфейсы Core Spotlight.
Это мой код внутри моего класса UIResponder
:
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributeSet.title = "Place Order Search"
attributeSet.contentDescription = "Get Your Avocado Toast Now"
attributeSet.relatedUniqueIdentifier = ActivityType.placeOrder.rawValue
let avocadoToastDictionary = AvocadoToastManger.dictionary(from: avocadoToastOrder)
let jsonAvocadoToastData = json(from: avocadoToastDictionary)
let activity = NSUserActivity(activityType: ActivityType.placeOrder.rawValue)
activity.title = "Place Order"
activity.userInfo = ["PlaceOrder.avocadoToast": jsonAvocadoToastData]
activity.requiredUserInfoKeys = ["PlaceOrder.avocadoToast"]
activity.suggestedInvocationPhrase = "Order an Avocado Toast"
activity.keywords = ["Order", "Avocado Toast"]
activity.isEligibleForHandoff = true
activity.isEligibleForSearch = true
activity.isEligibleForPrediction = true
activity.contentAttributeSet = attributeSet
self.userActivity = activity
activity.becomeCurrent()
Примечание. Метод updateUserActivityState(activity:)
вызывается дважды подряд.
Итак, как я могу отменить получение нескольких результатов поиска в поиске Spotlight и убедиться, что тот, у которого установлено свойство userInfo
, остается.