【问题标题】:How to show array from parse.com in a textview inside of a uitableviewcell?如何在 uitableviewcell 内的文本视图中显示来自 parse.com 的数组?
【发布时间】:2015-08-28 00:08:10
【问题描述】:

试图在 uitableviewcell 内的 textview 中显示从 parse.com 提取的数组。其他所有内容都在显示,但我似乎无法在文本视图中显示数组。这是我的代码。我收到致命错误: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)

【问题讨论】:

  • 嗨,我有一个问题,因为我陷入了与此类似的问题。您正试图让用户对帖子发表评论,对吗?如果是这样,当您按下回复按钮或其他东西时,即使它没有显示在应用程序上,它是否也在数据库中更新?
  • 在我的应用程序中没有它的消息,在数据库中发送消息更新,但是当我查看他的帖子时,我无法让它显示给消息的接收者。
  • 哦,我明白了,我猜编码部分应该与您从数据库中获取数据的方式相似,只是显示方式不同。但是,是的,我也遇到了麻烦。

标签: ios swift uitableview parse-platform


【解决方案1】:

您所做的基本上是故意正确的,但仍有相当一部分小错误需要纠正。在可能的情况下,外卖永远不会使用强制解包。

 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()
    })
   }

希望对您有所帮助!干杯!

【讨论】:

  • 等待我把它放在哪里,因为我正在主线程上执行一个长时间运行的解析操作
  • 将你的 self.tableView.reloadData() 包装在一个主队列中,代码如下:dispatch_async(dispatch_get_main_queue(), { () -> Void in self.tableView.reloadData() })是
  • 我也从解析中获取了其他内容
  • 用这个 [dispatch_async(dispatch_get_main_queue(), { () -> Void in self.tableView.reloadData() })] 一劳永逸地替换 [self.tableView.reloadData()]。不用担心
  • 不确定你上面提供的代码是否能解决我的问题,但反馈是我要放入文本视图的数组,所以如果它是 ["a","b","c"]我希望表格视图在单独的行上显示 a b c
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多