这是搜索的应用
在应用运行之前没有错误!
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = UITableViewCell()
cell = tableView.dequeueReusableCellWithIdentifier("SpotListCell")!
if(cell.isEqual(NSNull))
{
cell = (NSBundle.mainBundle().loadNibNamed("SpotListCell", owner: self, options: nil)[0] as? UITableViewCell)!;
}
if tableView == self.tableView {
cell.textLabel?.text = posts.objectAtIndex(indexPath.row).valueForKey("title") as! NSString as String
} else {
cell.textLabel?.text = self.filteredPosts[indexPath.row]
}
return cell
}
运行应用,搜索错误的时刻。 以下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
(LLDB)
哪里应该修改? 谢谢你的阅读。 注意我是韩国高中生。
答案 0 :(得分:1)
这条线是造成你麻烦的原因:
cell = tableView.dequeueReusableCellWithIdentifier("SpotListCell")!
您的表视图似乎无法为您创建SpotListCell
,并且因为您添加了!
,您强制编译器为您提供值,无论它是nil
还是if(cell.isEqual(NSNull))
然后在下一行中说:
nil
但是格式为NSNull
,因此您无法提出任何问题(此外...... UITableView
可能不是您正在寻找的内容。
修改:更新了我的回答
首先你应该注册Nib,以便UITableView
可以使用它。
为@IBOutlet weak var tableView: UITableView!
建立一个出口并连接到:
viewDidLoad()
contentTableView.registerNib(UINib(nibName: "SpotListCell", bundle: nil), forCellReuseIdentifier: "SpotListCell")
中,您可以执行以下操作:
guard let
最后你可以像这样使用你的细胞,注意override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCellWithIdentifier("SpotListCell") else {
return UITableViewCell()
}
//Populate as you did before
if tableView == self.tableView {
cell.textLabel?.text = posts.objectAtIndex(indexPath.row).valueForKey("title") as! NSString as String
} else {
cell.textLabel?.text = self.filteredPosts[indexPath.row]
}
return cell
}
安全地解开你的细胞:
Cache-Control:max-age=0
看看是否更好(我还没有用编译器检查过它,所以可能会有错误......我确信编译器会让你知道:))
希望对你有所帮助。