gpt4 book ai didi

ios - Json 数据未正确反射(reflect)在 tableView 中

转载 作者:搜寻专家 更新时间:2023-10-31 22:59:30 24 4
gpt4 key购买 nike

将本地 json 文件加载到 TableView 和调试器日志中一切正常,但数据在 tableView 中重复出现。我已经截取了模拟器的屏幕截图并在此处记录 - image description here可能是我认为我在附加数据时遇到问题。我有 TableViewCell - viewCell 和我的数据类 - attendance.swift,当然还有 tableViewController。我正在尝试显示两个数据字段。 tableViewController 的代码 -

var checkins = [attendance]()
override func viewDidLoad() {
super.viewDidLoad()
jsonParsingFromFile()
}
func jsonParsingFromFile()
{
let path: NSString = NSBundle.mainBundle().pathForResource("jsonFile", ofType: "json")!
let data : NSData = try! NSData(contentsOfFile: path as String, options: NSDataReadingOptions.DataReadingMapped)
self.parseJsonData(data)

dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}

func parseJsonData(data:NSData) -> [attendance]{
do{
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
//parse json data

let jsonCheckins = jsonResult?["university1"] as! [AnyObject]
for jsonAttendance in jsonCheckins {

let checkin = attendance()
checkin.id = jsonAttendance["id"] as! Int
checkin.name = jsonAttendance["name"] as! String

if (creden != checkin.id)
{

}
else
{
print(checkin.id)
print(checkin.name)
let check = jsonAttendance["attendance"] as! [AnyObject]

for ch in check {

checkin.subject = ch["subject"] as! String
print(checkin.subject)
checkin.attended = ch["attended"] as! Int
checkin.done = ch["held"] as! Int
checkin.atd = (Float(checkin.attended)/Float(checkin.done))*100
print(checkin.atd , " %")
checkins.append(checkin)
}
}
}
}
catch{
print(error)
}
return checkins
}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return checkins.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! viewCell
cell.subjectLabel.text = checkins[indexPath.row].subject
cell.attendanceLabel.text = String(checkins[indexPath.row].atd)+" %"
return cell
}

最佳答案

错误似乎是因为您只更新了一个对象并将其添加到数组中。因此最后你在数组中只剩下一种具有相同值的对象

let checkin = attendance()

将其移动到循环内

for ch in check {

关于ios - Json 数据未正确反射(reflect)在 tableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com