表格视图没有加载swift

时间:2014-11-06 05:29:47

标签: ios json uitableview swift

在swift中解析json文件时,我无法加载表视图。

解析数据效果不错。但是表格视图中没有显示数据。

这是代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var redditListTableView: UITableView!

    var tableData = []

    @IBAction func cancel(sender: AnyObject) {
        self.dismissViewControllerAnimated(false, completion: nil)
        println("cancel")
    }
    @IBAction func done(sender: AnyObject) {
        println("done")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        searchJsonFile("blabla.json")
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        println(tableData.count)
        return tableData.count
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 0
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")

        let rowData: NSString = self.tableData[indexPath.row] as NSString
        cell.textLabel.text = rowData as String

        return cell
    }

    func searchJsonFile(searchFile: String) {

        let urlPath = "http://data.../\(searchFile)"
        let url = NSURL(string: urlPath)
        let session = NSURLSession.sharedSession()
        let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in
            println("Task completed")
            if(error != nil) {
                // If there is an error in the web request, print it to the console
                println(error.localizedDescription)
            }
            var err: NSError?

            var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary

            if(err != nil) {
                println("JSON Error \(err!.localizedDescription)")
            }
            var results = [String]()

            if let results1 = jsonResult["data"] as? NSDictionary{
                for (key, value) in results1 {
                    if let eng = value["eng"] as? NSDictionary {
                        if let name = eng["name"] as? NSString{
                            results.append(name)
                        }
                    }
                }
            }

            //println(results)  OK!!!!

            dispatch_async(dispatch_get_main_queue(), {
                self.tableData = results
                self.redditListTableView.reloadData()
            })

        })

        task.resume()

    }

}

2 个答案:

答案 0 :(得分:1)

您从numberOfSectionsInTableView返回0 - 因此您不会显示任何数据。你想要1个部分 -

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

答案 1 :(得分:1)

如果您没有部分,则只需删除此功能或发表评论

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 0
    }

或者返回1

相关问题