如何在uitableviewcell的textview中显示来自parse.com的数组?

时间:2015-08-28 00:08:11

标签: ios swift uitableview parse-platform

尝试在uitableviewcell内的textview中显示从parse.com拉出的数组。其他一切都在显示,但我似乎无法在textview中显示数组。这是我的代码。我遇到致命错误:myCell2.feedbacktextview.text = feedback的数组索引超出范围![indexPath.row]

var feedback: [String]?
override func viewDidLoad() {
    super.viewDidLoad()

    var query = PFQuery(className: "Post")
     query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

            if error == nil {

            if let objects = objects  {
                 if object.objectForKey("Comments") != nil {

                   self.feedback = object.objectForKey("Comments") as! [String]

                    }
                   self.tableView.reloadData()
 }}}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

     let myCell2 = tableView.dequeueReusableCellWithIdentifier("feedcell1", forIndexPath: indexPath) as! YourAdviseControllerCell
      myCell2.feedbacktextview.text = feedback![indexPath.row]
      return myCell2
}

编辑:     self.imageFiles.append(object [“imageFile1”] as!PFFile)

                    self.imageFiles2.append(object["imageFile2"] as! PFFile)

                    self.usernames.append(object["message"] as! String)

                    self.usernames2.append(object["declaration"] as! String)

                    self.usernames3.append(object["whichbutton"] as! String)

1 个答案:

答案 0 :(得分:0)

基本上你所做的是故意纠正,但是有一小部分错误可以纠正。外卖将永远不会使用强制解包。

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

 let myCell2 = tableView.dequeueReusableCellWithIdentifier("feedcell1", forIndexPath: indexPath) as! YourAdviseControllerCell
  //This below line fetches the value from feedback if it has else gives ""
  myCell2.feedbacktextview.text = feedback?[indexPath.row] ?? ""
  return myCell2
}

这样就可以解决现在的问题,但是我看到这个代码是否被调用,然后你可能会从numberOfRowsInCells方法返回一些有效值而不考虑反馈值。理想情况下我会做这样的事情:

var feedback:[String]?

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return feedback?.count ??  0
}

即便如此,我猜也有一点问题。不要从在单独的线程或队列中执行的块调用tableView.reloadData()。在主队列中完成所有工作。

  if object.objectForKey("Comments") != nil {

               self.feedback = object.objectForKey("Comments") as! [String]

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

希望它有所帮助!干杯!