Ios NSUREActivity与核心聚光灯深度链接
我正在使用NSUserActivity和Core Spotlight为我的应用程序上的内容编制索引。 我之所以使用Core Spotlight,是因为我想在用户访问(打开)此内容之前对其编制索引 我面临的问题是AppDelegate方法:Ios NSUREActivity与核心聚光灯深度链接,ios,swift,xcode,corespotlight,nsuseractivity,Ios,Swift,Xcode,Corespotlight,Nsuseractivity,我正在使用NSUserActivity和Core Spotlight为我的应用程序上的内容编制索引。 我之所以使用Core Spotlight,是因为我想在用户访问(打开)此内容之前对其编制索引 我面临的问题是AppDelegate方法: func应用程序(application:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([Any]?)->Void)->Bool 基本上,us
func应用程序(application:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([Any]?)->Void)->Bool
基本上,userActivity
在我的viewController中执行此操作时,仅包含正确的信息:
userActivity=myUserActivity
但如果我这样做,它就不起作用了:
CSSearchableIndex.default().indexSearchableItems(searchableItems)
通过使用第二种方法(Core Spotlight),我可以在Spotlight search中查看所有结果,但当我点击该项时,AppDelegate方法中没有任何信息
最糟糕的是:
po userActivity.activityType
“com.apple.corespottlightitem”
如果我打印activityType,而不是我自己的,我会得到这个
有什么建议吗?当你的应用程序从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
}
}
从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
}
}
你的问题并不清楚,你期望看到什么。在任何情况下,在调用indexSearchableItems时,如果将searchableItem.identifier设置为某个唯一值,则可以稍后从userActivity.userInfo?[“kCSSearchableItemActivityIdentifier”]检索此值。“com.apple.corespottlightitem”的活动类型是正确的,并且是预期的。从您的问题来看,您不清楚您期望看到什么。在任何情况下,在调用indexSearchableItems时,如果将searchableItem.identifier设置为某个唯一值,则可以稍后从userActivity.userInfo?[“kCSSearchableItemActivityIdentifier”]检索此值。“com.apple.corespottlightitem”的活动类型是正确的,也是人们所期望的。哦,天哪,那金字塔般的厄运。使用逗号运算符、可选链接和
可选.map
/可选.flatMap
!就这样!我没有正确地理解它,而是平等地对待核心聚光灯和用户活动。非常感谢。哦,上帝,那座末日金字塔。使用逗号运算符、可选链接和可选.map
/可选.flatMap
!就这样!我没有正确地理解它,而是平等地对待核心聚光灯和用户活动。非常感谢。