gpt4 book ai didi

ios - 快速从 http 请求中提取一个值

转载 作者:行者123 更新时间:2023-11-28 09:03:13 32 4
gpt4 key购买 nike

要创建一个 UITableView,我必须初始化行数,在我的例子中,它取决于一个 HttpRequest(使用框架 HttpSwift 发送)。我的问题是我无法在请求返回时输出数字

request.GET("/media/", parameters: nil, completionHandler:{
(response: HTTPResponse) in
if let err = response.error {
println("error: \(err.localizedDescription)")
return //also notify app of failure as needed
}
if let data = response.responseObject as? NSData {
let str = NSString(data: data, encoding: NSUTF8StringEncoding)
var user = Medias(JSONDecoder(data))
var nbRows:Int = user.medias.count
}
})

println(nbRows) //NbRows don't have a value out of the request

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return nbRows
}

最佳答案

问题在于请求是在后台线程中执行的,并且执行是按顺序进行的。然后,当您执行 println(nbRows) 时,nbRows 变量不会更新,因为请求尚未发出或正在发出。

因此,要解决此问题,请将 nbRows 设置为全局变量,然后在设置变量时重新加载 tableView。

使用以下代码:

request.GET("/media/", parameters: nil, completionHandler: {(response: HTTPResponse) in
if let err = response.error {
println("error: \(err.localizedDescription)")
return //also notify app of failure as needed
}
if let data = response.responseObject as? NSData {
let str = NSString(data: data, encoding: NSUTF8StringEncoding)
//println(str)
var user = Medias(JSONDecoder(data))
self.nbRows = user.medias.count // make nbRows a globalVariable
println(nbRows)
// need to update tableView in the main thread
dispatch_async(dispatch_get_main_queue(), {
// reload the tableView
self.tableView.reloadData()
})
}
})

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return nbRows
}

关于ios - 快速从 http 请求中提取一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569461/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com