Ich versuche, die Werte aus dem JSON in die Tabellenansicht zu laden. Hier ist mein Code, ich weiß nicht, was ich vermisse? Es zeigt mir eine Liste von leeren Zellen, aber keine Werte.UITableView erstellt leere Zellen und keine Werte von JSON
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var tableView: UITableView!
let baseURL = “<url>”
var items = [UserObject]()
override func viewDidLoad() {
super.viewDidLoad()
let frame:CGRect = CGRect(x: 0, y: 100, width: self.view.frame.width, height: self.view.frame.height-100)
self.tableView = UITableView(frame: frame)
self.tableView.dataSource = self
self.tableView.delegate = self
self.view.addSubview(self.tableView)
getJSON()
dispatch_async(dispatch_get_main_queue(),{
self.tableView.reloadData()
})
}
//5 rows
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("count /(self.items.count)")
return self.items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CELL")
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL")
}
let user = self.items[indexPath.row]
print(self.items)
cell!.textLabel?.text = user.name
return cell!
}
func getJSON() {
let url = NSURL(string: baseURL)
print(url)
let request = NSURLRequest(URL: url!)
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if error == nil {
let swiftyJSON = JSON(data: data!)
let results = swiftyJSON.arrayValue
for entry in results {
self.items.append(UserObject(json: entry))
}
} else {
print("error \(error)")
}
}
task.resume()
}
}
Bitte beachten Sie, print("count /(self.items.count)")
kehrt 4, die aber
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//function does not show any print statements.
}
Danke, das hat funktioniert! Aber das druckt nur die Zelle! .textLabel? .text = user.name, aber wenn ich cell! .textLabel? .text = user.date tue, dann druckt es das nicht auf tableView .. keine Idee? – fscore
Das können wir nicht untersuchen, weil wir Ihr JSON- oder Benutzermodell nicht kennen. –
@KenanKarakecili user.date existiert also, wenn ich 'cell! .textLabel? .text = user.name' auskommentiere und' cell! .textLabel? .text = user.date' behalte, funktioniert es und umgekehrt, aber nicht beides zusammen – fscore