CoreData TextField - 意外发现 nil

CoreData TextField - unexpectedly found nil

我正在使用表视图中的 CoreData 和文本字段进行应用。在情节提要中,我有一个文本字段。应用程序中的不同内容,文本字段将增加五倍。在导航栏中,我有一个按钮可以保存您的书面数据。但是当我按下保存按钮时,应用程序崩溃并出现错误

IBOutlet 位于 TableViewCell.swift。图片中的代码:

    @IBAction public func saveTapped(){

        if activeTextField.text.isEmpty {
            let alert = UIAlertView()
            alert.title = "Nevyplnené údaje"
            alert.message = "Musíš vyplniť všetky údaje o knihe."
            alert.addButtonWithTitle("Ok")
            alert.show()


        }
        let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let obsah: NSManagedObjectContext = appDel.managedObjectContext!
        let entity = NSEntityDescription.entityForName("List", inManagedObjectContext: obsah)
        var pridat = Model(entity: entity! , insertIntoManagedObjectContext: obsah)

        pridat.kniha = activeTextField.text
        pridat.autor = activeTextField.text
        pridat.rok = activeTextField.text
        pridat.vydavatelstvo = activeTextField.text
        pridat.strany = activeTextField.text

        obsah.
}

完整代码如下:

http://pastebin.com/6LHqJW0w

这是 TableViewCell 代码:

http://pastebin.com/RAYTUcp6

我也试过了

    let mfv = TableViewCell()

        if mfv.textField.text.isEmpty {
        let alert = UIAlertView()
        alert.title = "Nevyplnené údaje"
        alert.message = "Musíš vyplniť všetky údaje o knihe."
        alert.addButtonWithTitle("Ok")
        alert.show()
    }

看起来您正试图在触发 UITextField 委托方法时设置 activeTextField 的值。但是,我看不到您在哪里将视图控制器设置为那些文本字段的 delegate 。我认为您需要向 cellForRowAtIndexPath 添加一些内容(或者可能在单元格的 configure 方法中)以设置文本字段的 delegate.

编辑

我会修改您的 configure 方法来设置 textField 的委托:

public func configure(placeholder: String, delegate : UITextFieldDelegate) {
        textField.placeholder = placeholder
        textField.accessibilityLabel = placeholder
        textField.delegate = delegate

    }

并同样修改视图控制器(无论你在哪里调用configure):

    cell!.configure("...", delegate:self)

编辑结束

我也会使 activeTextField 完全可选(不是隐式解包),因为它完全有可能为零(例如,如果在编辑任何文本字段之前点击保存)。然后,您应该使用 if letsaveTapped 方法中解包可选。