对于有效的URL,NSURL返回nil

rea*_* 19 2 nsurl ios swift

我有一个有效的Google地图网址,如果您在浏览器中运行,则会显示地图图片.但是,当我把它放在我的Swift代码中并尝试从String创建NSURL时,它返回nil

let urlString = "https://maps.googleapis.com/maps/api/staticmap?maptype=hybrid&center=37.33233141,-122.0312186&path=color:0xff0000|weight:10|37.33233141,-122.0312186|21.422570,%2039.826190&markers=color:blue%7Clabel:S%7C37.33233141,-122.0312186&markers=color:blue%7Clabel:S%7C21.422570,39.826190&zoom=1&size=1080x1920"
let url = NSURL(string: urlString)
Run Code Online (Sandbox Code Playgroud)

目前,这个回报为零,我不知道为什么.难道我做错了什么?

Aru*_*aya 5

它应该工作:这就是http://www.url-encode-decode.com的原因

        let url = NSURL(string: urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
Run Code Online (Sandbox Code Playgroud)

由于上面的API被弃用,替代方法是

    let url = NSURL(string: urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!)
Run Code Online (Sandbox Code Playgroud)

  • 你能否为代码的工作原理添加一些解释?对于偶然发现此问题的其他读者而言,仅限代码的答案并不是非常有用. (3认同)
  • @ real19只应用此功能才能正常工作.鉴于提供的字符串是格式错误的URL,并且文档明确声明此函数有问题"解决"部分转义的url字符串,以及此函数也_deprecated_的事实 - 我强烈建议不要使用它. (2认同)