将JSON从通知转换为URL

时间:2017-03-26 15:23:06

标签: json swift apple-push-notifications

我将收到的正文消息从通知转换为URL时遇到了一些麻烦。我收到以下错误:

  

无法转换类型' __ NSCFString' (...)到NSURL' (...)

我这样做的方式如下:

let aps = userInfo["aps"] as? Dictionary<String, AnyObject>
let alert = aps?["alert"] as? Dictionary<String, AnyObject>
let body = alert?["body"]
let url = body as! URL

JSON结构是aps: { alert: { body: "www.google.com"

问题:为什么施法失败?

1 个答案:

答案 0 :(得分:2)

String不是URL。您需要使用正确的URL初始化程序从String创建URL,而不是尝试投射它。

您还应该通过安全展开来编写更多防御性代码。

if let aps = userInfo["aps"] as? [String : AnyObject] {
    if let alert = aps["alert"] as? [String : AnyObject] {
        if let body = alert["body"] as? String {
            if let url = URL(string: body) {
                // do something with url
            }
        }
    }
}

您还可以将其缩短为:

if let aps = userInfo["aps"] as? [String : AnyObject], let alert = aps["alert"] as? [String : AnyObject], let body = alert["body"] as? String {
    if let url = URL(string: body) {
        // do something with url
    }
}