TableView不能在swift中帮助我

时间:2015-11-21 23:59:49

标签: json swift parsing tableview

以下代码正常运行,但"对于"块不起作用 所以" TableView"没有添加到数据中。

我该如何解决这个问题?

class ViewController: UITableViewController {

    var NumberOfRows = 0
    var BaslikArray = [String]()
    var GonderenArray = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()

        parseJSON()

    }
    func parseJSON(){

        let myUrl = NSURL(string: "http://10.10.5.1/mjson.php");
        let request = NSMutableURLRequest(URL:myUrl!);
        request.HTTPMethod = "POST";
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.setValue("application/json", forHTTPHeaderField: "Accept")
        let postString = "istek=pmliste&eposta=abc@abc.com&sifre=70c5fb2837e3edf992674a06fc876920&salt=sMb&tt=1";

        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil
            {
                print("error=\(error)")
                return
            }

            let readableJSON = JSON(data: data!, options: NSJSONReadingOptions.MutableContainers, error: nil)
            self.NumberOfRows = readableJSON["pm"].count

            for var i = 0; i < self.NumberOfRows; i++ {
              let aa = readableJSON["pm"][i]["baslik"].string!
               self.BaslikArray.append(aa)
                NSLog("\(readableJSON["pm"][i]["baslik"].string!)")
            }

        }

        task.resume()

    }



      override func tableView(tableView: UITableView, numberOfRowsInSection     sesction: Int) -> Int {
           return NumberOfRows
        }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell" , forIndexPath: indexPath) as UITableViewCell
        if BaslikArray.count != 0 { 
        cell.textLabel?.text = BaslikArray[indexPath.row]
        }
        return cell
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

1 个答案:

答案 0 :(得分:0)

数据加载完成后,您必须在表视图上调用reloadData。 I.E.,for循环结束后。

为了使代码更好,您可以做的另一件事是删除NumberOfRows属性。只需在需要知道行数的地方使用BaslikArray.count即可。