0
我刚刚开始学习Swift,并试图让Json数组在表格视图中显示。在加载UI之前执行代码
调试的几个小时后,我意识到,数据不是由UI出现,因为我得到一个numberOfRowsInSection = 0
我想知道是否有装载表JSON数据有后一种方式的时间准备已从网址中拉出。
非常感谢您的回答。
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, NSURLConnectionDelegate {
@IBOutlet var tableView: UITableView!
lazy var data = NSMutableData()
var datatodisplay = [String]()
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
startConnection()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
println(datatodisplay.count)
return datatodisplay.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = datatodisplay[indexPath.row]
return cell
}
func startConnection(){
//start connection to the the fixer.io API
let urlPath: String = "http://api.fixer.io/latest"
var url: NSURL = NSURL(string: urlPath)!
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()
}
func connection(connection: NSURLConnection!, didReceiveData data: NSData!){
self.data.appendData(data)
}
func connectionDidFinishLoading(connection: NSURLConnection!) {
var err: NSError
var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
var rawdata = jsonResult
println(rawdata)
dezarray(rawdata)
}
func dezarray(rawdata: NSDictionary){
if let rawrates = rawdata["rates"] as? NSDictionary {
println(rawrates)
println((rawrates.count))
println(rawrates["USD"])
for (currency, rawrate) in rawrates {
println("\(currency): \(rawrate)")
datatodisplay.append("\(currency): \(rawrate)")
}
println(datatodisplay)
}
}
}
因此,发布出现错误的代码以及在违规行中引用的所有变量/结构体/声明等。 –