所以在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,通过口袋妖怪字符串,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])")
}
}
}
这使用了alamo fire和swifty json。它接受字符串,将其附加到API调用的url,并将我当前正在打印的数据返回到控制台。
当我第一次选择一行时,它正常工作,它会进行调用并从API返回正确的数据。
但是,如果我选择另一行,那么它会返回相同的数据吗?有什么理由为什么调用不会刷新我通过的新字符串?
答案 0 :(得分:1)
这里只是一种可能性,但是如果你改变你的印刷品会发生什么:
println("\(self.pokemon[0])")
println("\(self.pokemon[1])")
要:
println("\(self.pokemon.last)")
我认为您正在获取新数据但未记录它,因为新条目已插入到数组的末尾,并且您正在记录第一个元素。