在表视图单元格上重复值API响应中的错误

时间:2015-08-20 07:28:55

标签: ios json swift uitableview

我有一个视图(让我们称之为View 1 ),上面有一个按钮。单击按钮后,我向我的API发出GET http请求。它发回一个对象数组。

目前我要做的是,当用户按下查看1 上的按钮时,响应数据会传递到查看2 ,这是 < EM>的tableView 即可。然后用返回的数据填充表格视图单元格。

我将返回的JSON响应从视图1传递到视图2,如下所示:

    dispatch_async(dispatch_get_main_queue()) {

                    let storyboard = UIStoryboard(name: "Main", bundle: nil)
                    let vc = storyboard.instantiateViewControllerWithIdentifier("BioView") as! BioTableViewController

                    vc.bioArray = parseJSON
                    self.presentViewController(vc, animated: true, completion: nil)

                }

parseJSON包含返回的JSON响应。

在视图2中,我有以下内容:

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
       {

            return self.bioArray.count

       }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("bioCell", forIndexPath: indexPath) as! UITableViewCell

    // Configure the cell...

    if bioArray.count > 0 {

        let weatherSummary: AnyObject = bioArray[indexPath.row]
        for x in bioArray {
            if let id = x["employeeName"] as? String{
                cell.textLabel?.text = id
            }
          }
        }

    return cell
  }

问题:

表视图不断重复返回的JSON数据中的最后一个值。见下文:

enter image description here

我的问题:

如何阻止值重复并显示响应数据中的所有值,当我点击tableview单元格时,它会转到另一个视图,并显示与单击单元格相关的所有详细信息。

1 个答案:

答案 0 :(得分:1)

您不需要使用for循环(因为它,表格视图保持重复值我猜)。 cellForRowAtIndexPath也将为您做同样的事情。只需尝试下面的代码:

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("bioCell", forIndexPath: indexPath) as! UITableViewCell

    // Configure the cell...

        let weatherSummary: AnyObject = bioArray[indexPath.row]

            if let id = weatherSummary["employeeName"] as? String //Dont know the exact syntax.
            {
                cell.textLabel?.text = id
            }

    return cell
  }

要摆脱if bioArray.count > 0条件,你可以这样做

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{
   return self.bioArray.count ?? 0 //This will return 0 rows if bioArray is empty.
}

希望这会有所帮助!