在部署目标 iOS 8 的 iOS 应用中使用 Spotlight
Using spotlight in iOS app with deployment target iOS 8
我有 iOS 应用程序,最小部署目标设置为 iOS 8.0,我想在其中启用 Spotlight 搜索。我知道 Spotlight 搜索只能在 iOS 9 及更高版本中使用。这就是为什么在我的 AppDelegate 中我使用 available
@available(iOS 9.0, *)
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
if let uniqIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
print(uniqIdentifier)
}
}
return true
}
Xcode 给我这个错误
Protocol 'UIApplicationDelegate' requires
'application(_:continue:restorationHandler:)' to be available on iOS
8.0 and newer
我能用它做什么
我找到了解决方案,所以我决定 post 它可能对其他开发人员有用。导入 CoreSpotlight 后
import CoreSpotlight
如果您的目标是 iOS 8.0 及更高版本,则应添加 application(_:continue:restorationHandler:) 方法。但由于 'CSSearchableItemActionType' 仅适用于 iOS 9.0 或更高版本,您应该在方法中添加版本检查。
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if #available(iOS 9.0, *) {
if userActivity.activityType == CSSearchableItemActionType {
if let uniqIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
print(uniqIdentifier)
}
}
}
return true
}
我有 iOS 应用程序,最小部署目标设置为 iOS 8.0,我想在其中启用 Spotlight 搜索。我知道 Spotlight 搜索只能在 iOS 9 及更高版本中使用。这就是为什么在我的 AppDelegate 中我使用 available
@available(iOS 9.0, *)
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
if let uniqIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
print(uniqIdentifier)
}
}
return true
}
Xcode 给我这个错误
Protocol 'UIApplicationDelegate' requires 'application(_:continue:restorationHandler:)' to be available on iOS 8.0 and newer
我能用它做什么
我找到了解决方案,所以我决定 post 它可能对其他开发人员有用。导入 CoreSpotlight 后
import CoreSpotlight
如果您的目标是 iOS 8.0 及更高版本,则应添加 application(_:continue:restorationHandler:) 方法。但由于 'CSSearchableItemActionType' 仅适用于 iOS 9.0 或更高版本,您应该在方法中添加版本检查。
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if #available(iOS 9.0, *) {
if userActivity.activityType == CSSearchableItemActionType {
if let uniqIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
print(uniqIdentifier)
}
}
}
return true
}