【问题标题】:Why is the URL error occurring?为什么会出现 URL 错误?
【发布时间】:2015-11-06 17:30:09
【问题描述】:

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

致命错误:在展开 Optional 值时意外发现 nil。

var searchTerm: String = "Angry Birds"
var itunesSearchTerm = searchTerm.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
var escapedSearchTerm = itunesSearchTerm.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
var urlPath = "https://itunes.apple.com/search?term=\(escapedSearchTerm)&media=software"
var url: NSURL = NSURL(string: urlPath)!
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!

print("Search iTunes API at URL \(url)")

connection.start()

【问题讨论】:

  • 通过在浏览器中粘贴网址来检查它是否在那里工作

标签: swift nsurl foundation itunes-api


【解决方案1】:

stringByAddingPercentEscapesUsingEncoding 返回一个可选字符串,所以你得到的实际上是这样的:

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

解决方案是安全地打开 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2011-04-23
      • 2021-08-04
      • 2013-01-29
      相关资源
      最近更新 更多