数组已附加,但内部没有值

时间:2015-12-17 02:47:44

标签: ios arrays swift uitableview rest

我在Swift文件中声明了一个String数组。

var postTitleArray : [String] = []

在我的viewDidLoad方法中,我将值附加到我的数组中......

RestApiManager.sharedInstance.makeGetRequest("/development/vw_posts?filter=parent_term_id%20%3D%20%22%5B82%5D%22", onCompletion: { json in
    for result in json["record"].arrayValue
    {
       let postTitle = result["post_title"].stringValue
       print(postTitle)
       self.postTitleArray.append(postTitle)
    }
})

除此之外,我已将数组的计数用于numberOfRowsInSection来设置我的tableView的行号...

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return self.postTitleArray.count
}

但是,numberOfRowsInSection返回0,为什么会发生这种情况,我已将值分配到 postTitleArray ,任何人都可以帮我看看这个?理解...

2 个答案:

答案 0 :(得分:2)

在调用numberOfRowsInSection之前,您的API调用可能尚未完成。

在填充reloadData后,尝试在UITableView个实例上致电postTitleArray。 (我在这里假设你引用了UITableView,并且它被称为tableView

RestApiManager.sharedInstance.makeGetRequest("/development/vw_posts?filter=parent_term_id%20%3D%20%22%5B82%5D%22", onCompletion: { json in
    for result in json["record"].arrayValue
    {
       let postTitle = result["post_title"].stringValue
       print(postTitle)
       self.postTitleArray.append(postTitle)
    }
    self.tableView.reloadData()
})

答案 1 :(得分:0)

你应该检查:

if let postTitle = result["post_title"]?.stringValue{
       self.postTitleArray.append(postTitle)
       self.tableView.reloadData()
    }