Swift 2 Xcode 7 beta 5.我在一个视图应用程序中工作,添加了一个表视图。我试图从本地主机mySQL数据库下载数据并在表视图中显示它。我能够下载数据并打印出来,但是当我尝试在section函数中使用numberOfRows来返回下载的数组的计数时,我得到了一些奇怪的结果。这是我的整个视图控制器的代码。
import UIKit
class InvoiceListViewController: UIViewController, UITableViewDelegate{
var currentInvoices = [NSDictionary]()
// Table View Outlet
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Set up the connection.
let url = NSURL(string: "http://localhost:8888/service.php")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if let invoiceUrlData = data {
do {
let invoiceData = try NSJSONSerialization.JSONObjectWithData(invoiceUrlData, options: NSJSONReadingOptions.MutableContainers) as! [NSDictionary]
self.currentInvoices = invoiceData
/*
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
*/
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
print(self.currentInvoices.count)
print(self.currentInvoices)
}
catch {
print("JSON Serialization Failed")
}
}
}
task.resume()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// The function that lists the number of rows in table view.
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print(currentInvoices.count)
return currentInvoices.count
}
//
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("invoiceCell", forIndexPath: indexPath)
return cell
}
}
如果我打印到控制台currentInvoices.count,我会看到几个零,然后显示正确的数字。然后tableView中不会显示任何内容。
0
0
0
0
2
下载的内容确实有一些变量可能是" null"在某些条目,但我能够打印到控制台,看到整个数据库已下载。我认为我在可选检查方面缺少一些安全性,也许这就是导致问题的原因?