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)
}
}
}
因此,發佈出現錯誤的代碼以及在違規行中引用的所有變量/結構體/聲明等。 –