Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么会发生URL错误?_Swift_Nsurl_Foundation_Itunes Api - Fatal编程技术网

Swift 为什么会发生URL错误?

Swift 为什么会发生URL错误?,swift,nsurl,foundation,itunes-api,Swift,Nsurl,Foundation,Itunes Api,我正在使用iTunes搜索API,为了测试,我正在搜索“愤怒的小鸟”并打印结果。但是当我将urlPath转换为NSURL时,我得到一个nil值。我该如何解决这个问题?urlPath具有链接,但在url变量中为nil。这就是确切的错误: 致命错误:在展开可选值时意外发现nil 当URL包含空格等非法字符时,NSURL返回nil。验证您的URL字符串是否正确 stringByAddingPercentEscapesUsingEncoding返回一个可选字符串,因此您得到的实际上是: https://

我正在使用iTunes搜索API,为了测试,我正在搜索“愤怒的小鸟”并打印结果。但是当我将
urlPath
转换为NSURL时,我得到一个
nil
值。我该如何解决这个问题?
urlPath
具有链接,但在url变量中为
nil
。这就是确切的错误:

致命错误:在展开可选值时意外发现nil


当URL包含空格等非法字符时,NSURL返回nil。验证您的URL字符串是否正确

stringByAddingPercentEscapesUsingEncoding
返回一个可选字符串,因此您得到的实际上是:

https://itunes.apple.com/search?term=Optional(“愤怒+小鸟”)&媒体=软件

解决方案是安全地打开可选的:

if let escapedSearchTerm = itunesSearchTerm.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) {
    let urlPath = "https://itunes.apple.com/search?term=\(escapedSearchTerm)&media=software"
    let url = NSURL(string: urlPath)
    // ...
}
结果:


https://itunes.apple.com/search?term=Angry+Birds&media=software

通过在浏览器中粘贴url来检查它是否在那里工作
if let escapedSearchTerm = itunesSearchTerm.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) {
    let urlPath = "https://itunes.apple.com/search?term=\(escapedSearchTerm)&media=software"
    let url = NSURL(string: urlPath)
    // ...
}