多次调用函数 swift,返回相同的数据

Calling a function more than once swift, returning the same data

所以在 swift 我在 UI Picker

中调用了一个函数
 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        switch row{
        case 0:
            //switch out for returning the actual selected item from picker not using the picker array
            let poke = ("\(mooArray[0])")
            getPokemon(poke);
        case 1:
            let poke = ("\(mooArray[1])")
            getPokemon(poke);
        case 2:
            let poke = ("\(mooArray[2])")
            getPokemon(poke);
        default:
            println("stopping")
        }

        //self.view.backgroundColor = newBackColor;

    }

正如你所见,它调用了getpokemon,传递了pokemon字符串,getpokemon函数如下

func getPokemon(poke: String)
    {
        println("\(poke)");
        //var pokemon = "charizard"
        var url = "http://pokeapi.co/api/v1/pokemon/" + poke

        Alamofire.request(.GET, url)
            .responseJSON { (req, res, json, error) in
                if(error != nil) {
                    NSLog("Error: \(error)")
                    println(req)
                    println(res)
                }
                else {
                    //NSLog("Success: \(url)")
                    let json = JSON(json!)
                    //println("\(json)")
                    if let ability = json["abilities"][0]["name"].string
                    {
                        //println("The title is: \(ability)")
                    }
                    if let evolevels = json["evolutions"][0]["level"].number
                    {
                        //println("\(evolevels)")
                    }
                    if let attack = json["attack"].number
                    {
                        //println("\(attack)")
                        self.pokemon.append("\(attack)");
                    } else
                    {
                        println(json["attack"].error)
                    }
                    if let name = json["name"].string
                    {
                        //println("\(name)")
                        self.pokemon.append("\(name)");

                    }
                    println("\(self.pokemon[0])")
                    println("\(self.pokemon[1])")

                }
        }

    }

这使用了阿拉莫火和 swifty json。它获取字符串,将其附加到 url 用于 API 调用和 returns 我当前正在打印到控制台的数据。

当我第一次 select 一行时,这一切工作正常,它使调用和 returns 来自 API 的正确数据。

但是如果我 select 另一行那么它 returns 相同的数据?调用不会刷新我传递的新字符串的任何原因?

这里只是一种可能性,但是如果您将印刷品更改为:

println("\(self.pokemon[0])")
println("\(self.pokemon[1])")

收件人:

println("\(self.pokemon.last)")

我认为您正在获取新数据但未记录它,因为新条目已插入到数组末尾,而您正在记录第一个元素。