【问题标题】:How to handle launchOptions: [NSObject: AnyObject]? in Swift?如何处理launchOptions:[NSObject:AnyObject]?在斯威夫特?
【发布时间】:2014-10-29 21:39:17
【问题描述】:

在 Swift AppDelegate 类中,您会获得以下方法:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // ...code...
    return true
}

launchOptions: [NSObject: AnyObject]? 参数是可选的。在 Objective-C 中,这是作为 NSDictionary 传递的。我希望从中提取UIApplicationLaunchOptionsRemoteNotificationKey。下面是它在 Objective-C 中的实现方式:

NSDictionary *remoteNotification = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

if (remoteNotification)
{
    // ...do stuff...
}

你会如何在 Swift 中做到这一点?

【问题讨论】:

    标签: swift appdelegate optional


    【解决方案1】:

    在 Swift 中,你会这样做:

    if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
        // ...do stuff...
    }
    

    【讨论】:

    • 如何将 remoteNotification 包含的内容登录到屏幕上。当应用程序附加到 xcode 时,需要从推送通知启动应用程序?
    • 查看实际情况的最佳方法是抛出一个 UIAlertView 和消息作为打印语句的内容,否则您将记录日志。
    【解决方案2】:

    我在 Swift 中这样处理它:

    if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
        // ... do stuff
    }
    

    【讨论】:

      【解决方案3】:

      我认为对于 Swift 3,应该是这样的:

      if (launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary) != nil {
          // ...do stuff          
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-22
        • 2017-03-24
        • 1970-01-01
        • 2016-02-08
        • 2017-11-13
        • 2015-08-19
        • 2014-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多