SwiftyJSON:根据 JSON 响应更新 UITableView 中的单元格
SwiftyJSON: Update Cells in UITableView from JSON response
我是 iOS 开发的新手,所以请多多包涵。
我正在使用 Alamofire and SwiftyJSON libraries for a project to get and parse a JSON file that is on a server. I also have used this tutorial 获取带有几个单元格的 UITableView "Cell 1" "Cell 2" "Cell 3".
使用我编写的 SwiftyJson 插件:
request(.GET, url, parameters: parameters)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
}
else {
NSLog("Success: \(url)")
var json = JSON(json!)
var indexValue = 0
for (index, item) in enumerate(json) {
println(json[index]["Brand"]["Name"])
var indvItem = json[index]["Brand"]["Name"].stringValue
self.items.insert(indvItem, atIndex: indexValue)
indexValue++
}
}
}
println() 行有效并显示正确的项目:
println(json[index]["Brand"]["Name"])
但是我似乎无法让他们进入牢房。
在文件顶部,根据 UITableView 教程的说明,我有这一行:
var items = ["Cell 1", "Cell 2", "Cell 3"]
没有错误,单元格只是保持它们的原始值。 如何获取 JSON 响应以更新 UITableView 中的单元格?
编辑:
@IBOutlet var tableView: UITableView!
var items = ["Cell 1", "Cell 2", "Cell 3"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel.text = self.items[indexPath.row]
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
你需要在解析数据后重新加载table,所以像-
request(.GET, url, parameters: parameters)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
}
else {
NSLog("Success: \(url)")
var json = JSON(json!)
var indexValue = 0
for (index, item) in enumerate(json) {
println(json[index]["Brand"]["Name"])
var indvItem = json[index]["Brand"]["Name"].stringValue
self.items.insert(indvItem, atIndex: indexValue)
indexValue++
}
self.tableView.reloadData() <-----------------------
}
}
我是 iOS 开发的新手,所以请多多包涵。
我正在使用 Alamofire and SwiftyJSON libraries for a project to get and parse a JSON file that is on a server. I also have used this tutorial 获取带有几个单元格的 UITableView "Cell 1" "Cell 2" "Cell 3".
使用我编写的 SwiftyJson 插件:
request(.GET, url, parameters: parameters)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
}
else {
NSLog("Success: \(url)")
var json = JSON(json!)
var indexValue = 0
for (index, item) in enumerate(json) {
println(json[index]["Brand"]["Name"])
var indvItem = json[index]["Brand"]["Name"].stringValue
self.items.insert(indvItem, atIndex: indexValue)
indexValue++
}
}
}
println() 行有效并显示正确的项目:
println(json[index]["Brand"]["Name"])
但是我似乎无法让他们进入牢房。
在文件顶部,根据 UITableView 教程的说明,我有这一行:
var items = ["Cell 1", "Cell 2", "Cell 3"]
没有错误,单元格只是保持它们的原始值。 如何获取 JSON 响应以更新 UITableView 中的单元格?
编辑:
@IBOutlet var tableView: UITableView!
var items = ["Cell 1", "Cell 2", "Cell 3"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel.text = self.items[indexPath.row]
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
你需要在解析数据后重新加载table,所以像-
request(.GET, url, parameters: parameters)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
}
else {
NSLog("Success: \(url)")
var json = JSON(json!)
var indexValue = 0
for (index, item) in enumerate(json) {
println(json[index]["Brand"]["Name"])
var indvItem = json[index]["Brand"]["Name"].stringValue
self.items.insert(indvItem, atIndex: indexValue)
indexValue++
}
self.tableView.reloadData() <-----------------------
}
}