когда я вызываю функцию callapi() в viewDidLoad(), println() в callapi печатает массив сообщений с объектами Post внутри него, однако println() внутри функции viewDidLoad() печатает пустой массив. Также, когда я создаю проект, я получаю эту ошибку «фатальная ошибка: индекс массива вне диапазона». оператор println() в функции tableView также печатает пустой массив. Кажется, таблица была обработана до того, как поступили данные из 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
}
tableView:numberOfRowsInSection:
метод? - person Rob   schedule 19.04.2015posts
пуст вviewDidLoad
, имеет смысл (поскольку это заполняется асинхронно, т.е. позже). Что не совсем понятно, так это то, чтоcellForRowAtIndexPath
не следует вызывать до тех пор, покаnumberOfRowsInSection
не сообщит, что есть несколько строк для отображения. - person Rob   schedule 19.04.2015reloadData
за пределы циклаfor
. Я не думаю, что это ваша проблема, но это неэффективно. - person Rob   schedule 19.04.2015posts
сможет вам что-то показать. Когда вызов JSON завершен, таблица перезагружается (поскольку вы вызвалиreloadData
). - person Rob   schedule 19.04.2015