尝试在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)
答案 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()
})
}
希望它有所帮助!干杯!