2017-09-25 9 views
0

私はiTunes APIを呼び出すために使用している構造体があります。しかし、今まで私が実行したときにmyURL変数が決して設定されていない、それは常にnilです。私が間違っているのかわからない:Swift 3のURLは常にnilです。

let myDefaultSession = URLSession(configuration: .default) 
var myURL: URL? 
var myDataTask: URLSessionTask? 

struct APIManager { 

    func getJSON(strURL: String) { 
     myURL = URL(string: strURL) 
     var dictReturn: Dictionary<String, Any> = [:] 

     //cancel data task if it is running 
     myDataTask?.cancel() 
     print(myURL!) //<----Always nil 
    } 
} 

をここに文字列です:

"https://itunes.apple.com/search?media=music&entity=song&term=The Chain" 
+1

ポストgetJSON –

+0

https://itunes.apple.com/search?media=music&entity=song&term=Theチェーンに渡す文字列you're – PruitIgoe

答えて

5

URLにスペースが含まれているためYou'reがnilを取得。最初に文字列をエンコードし、URLに変換する必要があります。

func getJSON(strURL: String) { 
    if let encoded = strURL.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed), 
     let myURL = URL(string: encoded) { 
     print(myURL) 
    } 

    var dictReturn:Dictionary<String, Any> = [:] 

    //cancel data task if it is running 
    myDataTask?.cancel() 
} 

URLは次のようになります。

https://itunes.apple.com/search?media=music&entity=song&term=The%20Chain 
関連する問題