参数类型NSURL不符合

时间:2016-10-04 10:44:11

标签: swift3 xcode8

我正在使用旧的教程swift2,Alamofire 3,但我使用的是swift 3,Alamofire 4.

我已经成功改变了大部分事情,但我遇到了一个问题。 使用此代码区域。

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

我收到的错误是:

  

参数类型NSURL不符合预期类型   URLRequestConvertible。

它确实给了我加入的选项!在(url)之后的URLRequestConvertible但是在编译之后它再次崩溃,当我按下按钮获取信息时。它给出了错误:

  

无法转换类型的值' NSURL' (0x117e99338)来   ' Alamofire.URLRequestConvertible' (0x1189ab120)。

如果我将NSURL更改为Url,那么它会在代码中向前移动,但是当它到达print语句时它会崩溃并给出错误:

  

致命错误:在解包可选值时意外发现nil

这是下面的代码。

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但我得到同样的错误。

任何人都可以为我阐明这一点。

如果它有助于我在下一个代码中打印出一个断点(&#34; Here&#34;),它会给我以下错误。

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

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

出现错误:

  

可选({       &#34; ERROR_MESSAGE&#34; =&#34;抱歉,无法处理此请求。请稍后再试。&#34 ;;   })   这里

提前致谢, 贝

2 个答案:

答案 0 :(得分:0)

我试过下面的&amp;这有帮助

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)
            }
        }
    }

答案 1 :(得分:0)

你几乎做了这些人,只是失去了URL的演员。

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