json - TableView 不能快速工作,请帮助我

标签 json swift parsing tableview

以下代码工作正常,但“for” block 不起作用 所以“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()
    }
}

最佳答案

数据加载完成后,您必须在 TableView 上调用reloadData。即,在 for 循环完成之后。

为了使代码变得更好,您可以做的另一件事是删除 NumberOfRows 属性。只要您需要知道有多少行,只需使用 BaslikArray.count 即可。

关于json - TableView 不能快速工作,请帮助我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850105/

相关文章:

csv - haskell中的木薯解析错误

ios - ObjectiveDDP 和 meteor 更新/插入集合

java - GSON - 使用 unicode 字符

ios - 根据 View 设置按钮一侧的角半径?

java - 安卓服务器: Parse server gradle build

c++ - 编译器 : limitation of lexical analysis

php - javascript 不通过 php 代码发送数据

java - 如何使用Apache Avro序列化JSON文档,然后写入Cassandra?

ios - 如何使用 swift 以编程方式将 pdf 文档保存到 iCloud Drive?

ios - 多级UIView(xib类型)不触发UITapGestureRecognizer