Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改NSArray后UITableView未更新_Ios_Swift_Uitableview - Fatal编程技术网

Ios 更改NSArray后UITableView未更新

Ios 更改NSArray后UITableView未更新,ios,swift,uitableview,Ios,Swift,Uitableview,我对HTTP有异步请求,我想读取JSON并填充我的viewtable 我通过请求获取数据,我制作了NSArray,但我可以在函数中传递它,tableView numberofrowsin节只返回1,请帮助 import Foundation import UIKit class ThirdView : UITableViewController { var jsonz:NSArray = ["Ray Wenderlich"]; let url = NSURL(string: "http:/

我对HTTP有异步请求,我想读取JSON并填充我的viewtable

我通过请求获取数据,我制作了NSArray,但我可以在函数中传递它,tableView numberofrowsin节只返回1,请帮助

import Foundation

import UIKit

class ThirdView : UITableViewController {

var jsonz:NSArray = ["Ray Wenderlich"];
let url = NSURL(string: "http://iweddings.ru/xmlrestaurant.json");

override func viewDidLoad() {

    super.viewDidLoad()

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! NSArray
        println(json)
// here i see in xCode output
//        price = 4500;
//        rating = 45;
//        slogan = "\U041d\U0435\U043b\U0435\U0433\U0430\U043b\U044c\U043d\U043e";
//        status = 1;
//        type = 1;
// etc....


            self.jsonz = json;
    }

    task.resume()


}


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

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    println(self.jsonz.count);
    return self.jsonz.count;
// here i see always "1" ???? why?
}
NSArrayjsonz不会改变。
对不起,我说的是英语。

下载json数据后,需要调用
reloadData()
方法:

class ThirdView: UITableViewController {
    var jsonz: NSArray = ["Ray Wenderlich"]
    let url = NSURL(string: "http://iweddings.ru/xmlrestaurant.json")

    override func viewDidLoad() {
        super.viewDidLoad()

        let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
            let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! NSArray
            println(json)

            self.jsonz = json;
            self.tableView.reloadData()
        }

        task.resume()
    }


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

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

谢谢,现在它可以工作了,但是大约40秒。40秒后,我只看到一个电池,在这之后,所有6个电池都在加载。你知道为什么吗?当我使用非异步请求时,它是~4秒。对于所有加载。看起来您正在后台线程上更新tableView。将reloadData()移动到主线程上。我移动了40秒:(你是如何移动的?用你的更改更新你的代码,