corespotlight - 在 Spotlight 中重复显示 NSUserActivity
问题描述
我知道有几篇关于这个主题的帖子,但它们与我的问题有很大不同。
我正在尝试NSUserActivity
在 Spotlight 搜索中显示我的。对于我来说NSUserActivity
,我使用了三个 API .isEligibleForHandoff
:.isEligibleForSearch
和.isEligibleForPrediction
.
我的问题是我的活动在 Spotlight 搜索中显示了两次,其中一个结果提供了一个空的 userInfo,而另一个没有。但是Apple Programming Guide建议:
使用以下策略来避免创建单个项目的重复表示:
如果您同时使用 NSUserActivity 和 Core Spotlight API 来索引项目,请为相关唯一标识符和唯一标识符使用相同的值来链接项目的表示。
但我认为这甚至不是我的问题,因为我没有使用任何 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:)
方法被连续调用两次。
那么如何避免在 Spotlight 搜索中获得多个搜索结果,并确保userInfo
保留具有属性集的搜索结果。
解决方案
推荐阅读
- ruby-on-rails - 多条路线文件 rails 5
- javascript - 如何在 JS 中获取所有祖先的方法(原型继承)?
- r - 从 .GlobalEnv 中分离脚本:源脚本的源脚本
- android - Android - 即使在用户使用 KOTLIN 关闭应用程序后,如何保存用户设置首选项?
- javascript - 从左到右动画 div 宽度
- r - 有没有办法在 Matlab 或 R 中实现多输出高斯过程?
- python - 以非常慢的速度从 BLE 设备读取数据
- python - 我可以使用 Surprise 即时预测新用户的评分吗?
- snowflake-cloud-data-platform - 如何在雪花外部表中表达单行 json 文件
- python - 通过匹配python中的模式将列表拆分为列表列表