ios - 在 Swift 3 中检查 launchOptions

标签 ios swift3

我已将我的代码转换为 swift 3,并且已提交到应用商店。当他们打开应用程序时,它会在第一时间崩溃。结果,我检查了我的崩溃日志,它在这一行崩溃了。

    if let myLaunchOptions: NSDictionary = launchOptions as NSDictionary? {

我的整体代码是这样的。我知道 launchOptions 可以是 nil,它甚至可能不是 NSDictionary。这就是为什么我这样检查并且在那条线上失败的原因。我可以知道如何使用 swift 3 检查/预防吗?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    if let myLaunchOptions: NSDictionary = launchOptions as NSDictionary? {
        let test = myLaunchOptions[UIApplicationLaunchOptionsKey.userActivityDictionary] as! NSDictionary
        let userActivity = test["UIApplicationLaunchOptionsUserActivityKey"] as! NSUserActivity
        NSLog("test1:" + String(describing: userActivity))
        continueUserActivity(userActivity)
        }

我的崩溃日志在这里。

enter image description here

最佳答案

您应该像这样检查和获取用户事件:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    if let userActivityDictionary = launchOptions?[.userActivityDictionary] as? [UIApplicationLaunchOptionsKey : Any],
        let userActivity = userActivityDictionary[.userActivityType] as? NSUserActivity {
        continueUserActivity(userActivity)
    }

    return true
}

关于ios - 在 Swift 3 中检查 launchOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112711/

相关文章:

ios - 无法解锁钥匙串(keychain)

iphone - 无法解密通过 iPhone 上的 OpenSSL 编码的数据

ios - 为什么我无法在 tableview 单元格中正确显示标签文本

ios - Swift 3 和 Swift 4 中的 WebService API 方法?

ios - 长按并拖动时放大 UICollectionViewCell

用于更改用户设置的 iOS 私有(private) API

iphone - 在 cellForRowAtIndexPath 中更改 UITableViewCell 高度

ios - 在 Swift 中如何在 View Controller 和其他对象之间共享数据?

ios - 如何以编程方式从 UITableView 中删除一行并更新 UI

ios - 当连接到特定 wifi : ios 时运行我的应用程序