从函数中获取数据不能在swift中工作3
我可以获取JSON数据,但我无法将JSON数据添加到abcArr
。我在viewDidLoad()
中统计abcArr
女巫为0
。从函数中获取数据不能在swift中工作3
我在下面复制编码。
谢谢你的帮助。
我的编码:
class MapDetailViewController: UIViewController {
var abcArr = [String]()
override func viewDidLoad() {
super.viewDidLoad()
getInfo()
print("1: \(abcArr.count)")//output = 0
}
func getInfo() {
//MARK: get News data JSON
jsonURL = "http://json/abc.json"
if let url = NSURL(string: jsonURL) {
URLSession.shared.dataTask(with: url as URL, completionHandler: { (data, response, error) in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
if let data = data {
let json = JSON(data: data)
let jsonReturn = json["return"]
let abc = jsonReturn[i]["Lat"]
abcArr.append(abc)
} else {
print("no JSON data")
}
}
}).resume()
print("2: \(abcArr.count)")//output = 0
}
}
}
谢谢您的解决方案Vadian。
将行打印(abcArr.count)放在完成处理程序的末尾。
class MapDetailViewController: UIViewController {
var abcArr = [String]()
override func viewDidLoad() {
super.viewDidLoad()
getInfo()
}
func getInfo() {
//MARK: get News data JSON
jsonURL = "http://json/abc.json"
if let url = NSURL(string: jsonURL) {
URLSession.shared.dataTask(with: url as URL, completionHandler: { (data, response, error) in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
if let data = data {
let json = JSON(data: data)
let jsonReturn = json["return"]
let abc = jsonReturn[i]["Lat"]
abcArr.append(abc)
} else {
print("no JSON data")
}
print("1: \(abcArr.count)")// display abcArr of count
}
print("2: \(abcArr.count)")// display abcArr of count
}).resume()
}
}
}
我的JSON:
{
return: [{
lat: "1111",
}]
}
你的处理程序中的变量i从哪里来? – user3441734
我的JSON只有一个值,所以我不能使用循环 – ShingHung
如果你需要循环,你可以让'json = JSON(data:data)'行后 – ShingHung
凡要访问这个'abcArr'阵列 –
我编辑我的编码。谢谢您的提醒 – ShingHung
这是一个常见的误解。 'dataTask'异步工作。数据稍后返回。将“print(abcArr.count)'行放在完成句柄的末尾。 – vadian