Ios Swift主详细视图-致命错误:在展开可选值(lldb)时意外发现零
我一直盯着这个错误,我真的弄不明白。我觉得一切都做得很好,我的标签也贴在了我的viewController上,但我一直都会遇到这个致命的错误 主视图控制器:Ios Swift主详细视图-致命错误:在展开可选值(lldb)时意外发现零,ios,swift,Ios,Swift,我一直盯着这个错误,我真的弄不明白。我觉得一切都做得很好,我的标签也贴在了我的viewController上,但我一直都会遇到这个致命的错误 主视图控制器: class MasterViewController: UITableViewController { var detailViewController: DetailViewController? = nil var objects = NSMutableArray() var myBookStore: BookStore = BookS
class MasterViewController: UITableViewController {
var detailViewController: DetailViewController? = nil
var objects = NSMutableArray()
var myBookStore: BookStore = BookStore()
override func viewDidLoad() {
super.viewDidLoad()
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController = controllers[controllers.count-1].topViewController as? DetailViewController
}
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myBookStore.theBookStore.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel.text? = myBookStore.theBookStore[indexPath.row].title
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedBook:Book = myBookStore.theBookStore[indexPath.row]
if (detailViewController != nil){
self.detailViewController!.detailItem = selectedBook //send the model to the detailItem
}
}
}
DetailViewController
class DetailViewController: UIViewController {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var authorLabel: UILabel!
@IBOutlet weak var descriptionTextView: UITextView!
var detailItem: AnyObject? {
didSet {
self.configureView()
}
}
func configureView() {
if let detail: AnyObject = self.detailItem
{
var myBook = detail as Book
println(titleLabel)
println(authorLabel)
println(descriptionTextView)
println(myBook.title)
println(myBook.author)
println(myBook.description)
titleLabel.text = myBook.title
authorLabel.text = myBook.author
descriptionTextView.text = myBook.description
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.configureView()
}
}
这表明:
-titleLabel、authorLabel、descriptionTextView均为零
-myBook.title、myBook.author、myBook.description获取所需的正确值
我看到了所有相同的问题,但找不到任何解决办法
请帮帮我。我已经开始学习Swift一天了我看到的唯一可选选项是DetailViewController,它在开始时设置为零。我猜在你的MasterViewController中的某个地方,你正在呼叫DVC,而它仍然为零。Xcode应该突出显示发生错误的地方。注意:在将文本指定给标签文本字段之前,您正在打印对象(
标题标签
等),因此它们当然看起来是空的。解决方案:使println(titleLabel.text)
发生在titleLabel.text=myBook.title
之后。至于真正的问题,您似乎忘记了创建模型对象并将其添加到书店数组中。谢谢,但如果我删除所有println命令,致命错误仍然会发生。我在看到错误后添加了println命令,以观察发生了什么我认为问题不是来自MasterViewController,因为在我单击列表书籍上的某些行后,详细信息(标题、作者、描述)传递给了DetailViewController。命令“println(myBook.title)”返回正确的值