多次调用函数 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)")
我认为您正在获取新数据但未记录它,因为新条目已插入到数组末尾,而您正在记录第一个元素。
所以在 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)")
我认为您正在获取新数据但未记录它,因为新条目已插入到数组末尾,而您正在记录第一个元素。