展开时NSUrl返回nil

时间:2015-03-26 11:42:18

标签: ios swift exception nsurl null

NSUrl在运行此代码时返回nil。

let urlString = "https://api.flickr.com/services/rest/?text=baby asian elephant&method=flickr.photos.search&format=json&nojsoncallback=1&extras=url_m&safe_search=2&api_key=ed8f0359ce87560e56cda1fe71e8ad9d"
let url = NSURL(string: urlString)!

抛出:

EXC_BAD_INSTRUCtION

为什么会发生这种情况的任何想法。

谢谢。

4 个答案:

答案 0 :(得分:2)

问题是urlString中的空格。

他们需要更换。网址中的空格被写为%20而不是

let urlString = "https://api.flickr.com/services/rest/text=baby%20asian%20elephant&method=flickr.photos.search&format=json&nojsoncallback=1&extras=url_m&safe_search=2&api_key=ed8f0359ce87560e56cda1fe71e8ad9d"

我猜你以某种方式自己插入text参数?!这个参数需要首先进行转义,Zaph已经指出了该案例的必要方法。

答案 1 :(得分:2)

网址中不应有空格。

答案 2 :(得分:1)

urlString

中不能有空格
let urlString = "https://api.flickr.com/services/rest/?text=baby%20asian%20elephant&method=flickr.photos.search&format=json&nojsoncallback=1&extras=url_m&safe_search=2&api_key=ed8f0359ce87560e56cda1fe71e8ad9d"
let url = NSURL(string: urlString)!

答案 3 :(得分:1)

URL字符串包含需要转义的字符:空格字符。以下是转义网址的示例代码:

let urlString = "https://api.flickr.com/services/rest/?text=baby asian elephant&method=flickr.photos.search&format=json&nojsoncallback=1&extras=url_m&safe_search=2&api_key=ed8f0359ce87560e56cda1fe71e8ad9d"

let escapedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet())

if  let escapedString = escapedString {
    let url = NSURL(string: escapedString)
    if let url = url {
        println("url: \(url)")
    }
}

输出

url: https://api.flickr.com/services/rest/?text=baby%20asian%20elephant&method=flickr.photos.search&format=json&nojsoncallback=1&extras=url_m&safe_search=2&api_key=ed8f0359ce87560e56cda1fe71e8ad9d