Ios Swift主详细视图-致命错误:在展开可选值(lldb)时意外发现零

Ios Swift主详细视图-致命错误:在展开可选值(lldb)时意外发现零,ios,swift,Ios,Swift,我一直盯着这个错误,我真的弄不明白。我觉得一切都做得很好,我的标签也贴在了我的viewController上,但我一直都会遇到这个致命的错误 主视图控制器: class MasterViewController: UITableViewController { var detailViewController: DetailViewController? = nil var objects = NSMutableArray() var myBookStore: BookStore = BookS

我一直盯着这个错误,我真的弄不明白。我觉得一切都做得很好,我的标签也贴在了我的viewController上,但我一直都会遇到这个致命的错误

主视图控制器:

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)”返回正确的值