我列出了我的错误所在。在我的应用程序上,我试图从Parse检索数据并将其显示在具有多个对象的自定义PFTableViewCell中。每次," null"返回所有标签的值,这就是我的标签......我总是在标记的行上出错:"致命错误:在展开可选值(lldb)&#时意外发现nil 34;
import UIKit
import CoreLocation
import ParseUI
import Parse
class TableViewController: PFQueryTableViewController, CLLocationManagerDelegate {
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as?TableViewCell
cell?.gabText.text = object?.valueForKey("text") as? String ------> error
cell?.gabText.numberOfLines = 0
let score = object?.valueForKey("vote") as? Int
cell?.voteCount.text = "\(score)"
cell?.time.text = "\((indexPath.row + 1) * 3)m ago"
let replycnt = object?.objectForKey("replies") as? Int
cell?.gabReplies.text = "\(replycnt) replies"
return cell!
}
}
答案 0 :(得分:0)
我不能告诉你为什么你只为你的对象获得nil
,但是当你发生这种情况时你可以重构它:
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as? TableViewCell
if let object = object {
cell?.gabText.text = object.valueForKey("text") as? String
cell?.gabText.numberOfLines = 0
let score = object.valueForKey("vote") as? Int
cell?.voteCount.text = "\(score)"
cell?.time.text = "\((indexPath.row + 1) * 3)m ago"
let replycnt = object.objectForKey("replies") as? Int
cell?.gabReplies.text = "\(replycnt) replies"
}
return cell!
答案 1 :(得分:0)
我不知道你是如何得到你的对象的,但是你可以确保一个密钥存在,然后才能获得它的价值,例如:
cell?.gabText.text = object?.valueForKey("text") as? String
可以在if语句中包含这样的内容:
if object?.objectForKey("text") != nil {
}
这样,您可以在尝试从中获取值之前确保文本键存在。