我将收到的正文消息从通知转换为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"
问题:为什么施法失败?
答案 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
}
}