我正在使用NSUserActivity和content在我的应用程序上索引内容。我之所以使用Core,是因为我想在用户访问(打开)之前对这个内容进行索引。
我面临的问题是AppDelegate方法:func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool
基本上,当我在我的userActivity 中执行此操作时,只有包含正确的信息:
userActivity = myUserActivity
但如果我这样做是行不通的:
CSSearchableIndex.default().indexSearchableItems(searchableItems)。
通过使用第二种方法(Core ),我可以在聚光灯下看到我所有的结果,但是当我点击这个项目时,我在AppDelegate方法中没有任何信息。
最糟糕的是:
po userActivity.activityType "com.apple.corespotlightitem"
如果我打印activityType,而不是我自己的,我会得到这个.
有什么建议吗?
发布于 2018-07-24 01:49:35
当您的应用程序从CoreSpotlight结果启动时,您将得到一个CSSearchableItemActionType。
您需要通过检索CSSearchableItemActivityIdentifier来处理这种类型的操作--此值将与提交到索引时为可搜索项提供的标识符相匹配。
类似于:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
guard let selectedItem = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String else {
return
}
// Do something with selectedItem
}
}https://stackoverflow.com/questions/51489110
复制相似问题