1

私は iTunes 検索 API を使用しており、テストのために「Angry Birds」を検索して結果を出力しています。しかし、urlPathを NSURL に変換すると、nil値が得られます。これを修正するにはどうすればよいですか? にはurlPathリンクがありますがnil、url 変数にあります。これは正確なエラーです:

致命的なエラー: オプション値のラップ解除中に予期せず 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()
4

2 に答える 2

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

于 2015-11-06T17:44:41.353 に答える