swift - 在部署目标 iOS 8 的 iOS 应用程序中使用聚光灯

标签 swift ios8 appdelegate corespotlight

我的 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

我能用它做什么

最佳答案

我找到了解决方案,所以我决定发布它,因为它可能对其他开发人员有用。导入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
}

关于swift - 在部署目标 iOS 8 的 iOS 应用程序中使用聚光灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49917465/

相关文章:

ios - View 标签属性的 switch 语句

ios - 应用视频预览

ios - 如何像这样在 iOS7+ 中将自定义 UIView 添加到导航栏

ios - Xcode 6 - 在 iPhone 4/5 上使用大小类

Swift:清理声明/元编程

ios - swift : Error when the same button is reused. 错误是 "<UIButton: ; frame = ; opaque = NO; autoresize = RM+BM; layer"

ios - 观察者在使用 Uiapplication() 时遇到问题

ios - 如何从我的应用程序委托(delegate)启动一个 NSTimer,它调用我在 Viewcontroller.m 中的方法

ios - 如何在没有 Storyboard的情况下运行应用程序?

ios - UISearchBar 按钮