このトピックに関する投稿がいくつかあることは知っていますが、それらは私の問題とは大きく異なります。
NSUserActivity
Spotlight 検索で自分を表示しようとしています。私の場合、 、、のNSUserActivity
3 つの API を使用しています。.isEligibleForHandoff
.isEligibleForSearch
.isEligibleForPrediction
私の問題は、私のアクティビティが Spotlight 検索で 2 回表示され、結果の 1 つは空の userInfo を提供し、もう 1 つは提供しないことです。ただし、Apple プログラミング ガイドでは次のように提案しています。
次の戦略を使用して、1 つのアイテムの重複表現を作成しないようにします。
アイテムのインデックス作成に NSUserActivity API と Core Spotlight API の両方を使用している場合は、 relatedUniqueIdentifier と uniqueIdentifier に同じ値を使用して、アイテムの表現をリンクします。
しかし、Core Spotlight API を使用していないので、これは私の問題ではないと思います。
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:)
メソッドが 2 回続けて呼び出されています。
では、Spotlight 検索で複数の検索結果を取得しないようにするにはどうすればよいでしょうかuserInfo
。