Swift:删除 Parse 中的列后应用程序崩溃
Swift: app crashes after deleting a column in Parse
在 Parse 中,我不小心删除了一个名为 "likes" 的列,该列计算用户为其博客 post 收到的点赞数。我再次使用相同的名称创建了该列,但现在当我 运行 我的应用程序崩溃时,我收到了这条消息 "unexpectedly found nil while unwrapping an Optional value"。它指向我的代码,它应该在我的 cellForRowAtIndexPath 中接收 "likes"。我在下面粘贴了我的代码。有什么方法可以解决这个问题并阻止它崩溃吗?
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
}
如果我是你,我会检查 object
发生了什么。您显然没有获得预期的数据。作为权宜之计,您可以将 let like = object["likes"] as! Int
更改为
if let like = object["likes"] as? Int {
cell.likeTracker.text = "\(like)"
}
如果这样做,您还需要在 BlogCell
中实现 prepareForReuse
方法以将该标签的文本设置为 nil
否则您可能会遇到一些奇怪的单元格重用错误.
如果您从 uitableview 中删除列,您需要从数据源中删除数据,并更新删除索引或重新加载整个 table 。
寻找您是否缺少该步骤
在 Parse 中,我不小心删除了一个名为 "likes" 的列,该列计算用户为其博客 post 收到的点赞数。我再次使用相同的名称创建了该列,但现在当我 运行 我的应用程序崩溃时,我收到了这条消息 "unexpectedly found nil while unwrapping an Optional value"。它指向我的代码,它应该在我的 cellForRowAtIndexPath 中接收 "likes"。我在下面粘贴了我的代码。有什么方法可以解决这个问题并阻止它崩溃吗?
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
}
如果我是你,我会检查 object
发生了什么。您显然没有获得预期的数据。作为权宜之计,您可以将 let like = object["likes"] as! Int
更改为
if let like = object["likes"] as? Int {
cell.likeTracker.text = "\(like)"
}
如果这样做,您还需要在 BlogCell
中实现 prepareForReuse
方法以将该标签的文本设置为 nil
否则您可能会遇到一些奇怪的单元格重用错误.
如果您从 uitableview 中删除列,您需要从数据源中删除数据,并更新删除索引或重新加载整个 table 。 寻找您是否缺少该步骤