2016-10-04 62 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 
    ... 
} 
相关问题