当我在 viewDidLoad() 中调用 callapi() 函数时,callapi 中的 println() 会打印包含 Post 对象的帖子数组,但是 viewDidLoad() 函数中的 println() 会打印一个空数组。此外,当我构建项目时,我收到此错误“致命错误:数组索引超出范围”。tableView 函数中的 println() 语句也打印一个空数组。似乎表格在来自 API 的数据到达之前就已呈现,我该如何解决这个问题?
var posts = [Post]()
override func viewDidLoad() {
super.viewDidLoad()
callapi()
println(self.posts)
}
func callapi(){
request(.GET, "url")
.responseJSON { (request, response, data, error) in
let json = JSON(data!)
if let jsonArray = json.array {
for post in jsonArray {
var onepost = Post(id:post["id"].stringValue,
title:post["title"].stringValue,
author:post["author"].stringValue,
post:post["post"].stringValue,
created_on:post["created_on"].stringValue,
updated_on:post["updated_on"].stringValue)
self.posts.append(onepost)
println(self.posts)
self.tableView.reloadData()
}
}
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier,
forIndexPath: indexPath) as! CustomTableViewCell
println(self.posts)
let post = self.posts[indexPath.row]
// Configure the cell...
cell.titleLabel!.text = self.posts[indexPath.row].title
cell.postLabel.text = post.post
println(self.posts)
return cell
}