2016-10-04 63 views
1

我從一箇舊的教程swift2,Alamofire 3個工作,但我使用SWIFT 3,Alamofire 4參數類型NSURL不符合

我已經成功地改變了大多數的事情,但我遇到了一個問題。 使用此代碼區域。

let url = NSURL(string: _pokemonUrl)! 
     Alamofire.request(url).responseJSON { response in 
      let result = response.result 

我得到一個錯誤,指出:

Argument type NSURL does not conform to expected type URLRequestConvertible.

它確實給我,像添加的選項! (url)後的URLRequestConvertible,但在編譯後,當我按下按鈕以獲取信息時,它會再次崩潰。它給出了一個錯誤:

Could not cast value of type 'NSURL' (0x117e99338) to 'Alamofire.URLRequestConvertible' (0x1189ab120).

如果我改變NSURL到URL,然後向前移動的代碼,但是當它到達崩潰print語句,並給出了錯誤:

fatal error: unexpectedly found nil while unwrapping an Optional value

這裏下面的代碼。

let url = URL(string: _pokemonUrl)! 
     Alamofire.request(url).responseJSON { response in 
      let result = response.result 



      if let dict = result.value as? Dictionary<String, AnyObject> { 

       if let weight = dict["weight"] as? String { 
        self._weight = weight 
       } 

       if let height = dict["height"] as? String { 
        self._height = height 
       } 

       if let baseAttack = dict["attack"] as? Int { 
        self._baseAttack = "\(baseAttack)" 
       } 



       if let defense = dict["defense"] as? Int { 
        self._defense = "\(defense)" 
       } 


       print(self._weight) 
       print(self._height) 
       print(self._baseAttack) 
       print(self._defense) 

我試圖將所有更改爲INT,但我得到相同的錯誤。

任何人都可以爲我解釋這一點。

如果它有幫助我在下一個代碼中打印後打印一個斷點(「Here」),它給了我下面的錯誤。

let url = URL(string: _pokemonUrl)! 
     Alamofire.request(url).responseJSON { response in 
      let result = response.result 

      print(result.value.debugDescription) 
      print("Here") 

錯誤出現:

Optional({ "error_message" = "Sorry, this request could not be processed. Please try again later."; }) Here

由於提前, 託尼

+1

協議名稱「URLRequestConvertible」意味着您需要*(NS)URL **請求***。 – vadian

+0

Hi @vadian。當我更改爲NSURLRequest時,它會要求我更改(字符串:_pokemonUrl)!到url:_pokemonUrl)!當我這樣做給出了一個錯誤,無法將類型字符串_pokemonUrl轉換爲參數類型URL –

+0

從該字符串中創建一個「(NS)URL」,並從該URL中創建一個「(NS)URLRequest」。請通過⌥-點擊符號或使用代碼完成來閱讀所需類別或快速幫助的文檔,以獲取有關所需類型的建議。 – vadian

回答

0

我試着如下因素&它幫助

func downloadPokemonDetails(completed: DownloadComplete) { 
     let url = URL(string: _pokemonUrl)! 
     Alamofire.request(URLRequest(url: url)).responseJSON { response in 
      if let result = response.result.value as? [String: Any]{ 
       print(result.debugDescription) 
      } 
     } 
    } 
+0

你能解釋一下嗎? – Miki

0

你幾乎做到了人,只是投到URL丟失。

let nsurl = NSURL(string: _pokemonUrl)! 
let request = URLRequest(url: nsurl as URL) 
Alamofire.request(request).responseJSON { response in 
    let result = response.result 
    ... 
} 
相關問題