【问题标题】:Swift: app crashes after deleting a column in ParseSwift:在 Parse 中删除一列后应用程序崩溃
【发布时间】:2015-11-11 18:22:31
【问题描述】:

在 Parse 中,我不小心删除了一个名为“likes”的列,该列计算用户对其博客文章获得的赞数。我再次使用相同的名称创建了该列,但是现在当我运行我的应用程序时它崩溃并且我收到此消息“在展开可选值时意外发现 nil”。它指向我的代码,它假设在我的 cellForRowAtIndexPath 中接收“喜欢”。我在下面粘贴了我的代码。有什么办法可以解决这个问题并阻止它崩溃?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath?) -> PFTableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("BCell", forIndexPath: indexPath!) as! BlogCell

    if let object : PFObject = self.blogPosts.objectAtIndex(indexPath!.row) as? PFObject {

        cell.author.text = object["blogger"] as? String
        cell.post.text = object["blogPost"] as? String
        let dateUpdated = object.createdAt! as NSDate
        let dateFormat = NSDateFormatter()
        dateFormat.dateFormat = "h:mm a"

        cell.timer.text =  NSString(format: "%@", dateFormat.stringFromDate(dateUpdated)) as String



        let like = object[("likes")] as! Int
        cell.likeTracker.text = "\(like)"


    }
    return cell
}

【问题讨论】:

  • let like = object[("likes")] as! Int 行?

标签: ios swift parse-platform pfquery


【解决方案1】:

如果我是你,我会检查 object 的情况。您显然没有获得预期的数据。作为权宜之计,您可以将let like = object["likes"] as! Int 更改为

if let like = object["likes"] as? Int {
   cell.likeTracker.text = "\(like)"
}

如果您这样做,您还需要在BlogCell 中实现prepareForReuse 方法,将该标签的文本设置为nil,否则您可能会遇到一些奇怪的单元格重用错误。

【讨论】:

  • 但是为什么我删除该列后它崩溃了?。它之前工作得很好
  • 我在 Parse 方面的经验非常少,所以我不确定。我猜你的列名有错别字,有某种服务器端缓存,或者 Parse 可能不喜欢它与前一列同名。您应该调查从服务器返回的内容。
【解决方案2】:

从 uitableview 中删除列的地方,需要从数据源中删除数据,并更新删除索引或重新加载整个表。 寻找你是否错过了那一步

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 2018-05-27
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多