编辑核心数据对象的致命错误

时间:2016-05-18 21:51:53

标签: xcode swift core-data

我是编程的新手。使用CoreData,我尝试创建编辑输入文本字段中的数据的功能,以编辑要保存到核心数据的数据。我有fatal error

  

在解包可选值时意外发现nil

@IBAction func update(sender: AnyObject) {
        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

        let manageContext = appDelegate.managedObjectContext

        let fetchRequest = NSFetchRequest(entityName: "Coursework")

        do {

            let results = try manageContext.executeFetchRequest(fetchRequest)

            let attribute = results[0] as! NSManagedObject

            detailItem?.value = modulename.text

            attribute.setValue(courseworkname.text, forkey: "courseworkname")
            attribute.setValue(dueDateLabel.text, forkey: "duedate")
            attribute.setValue(level.text, forkey: "level")
            attribute.setValue(mark.text, forkey: "mark")
            attribute.setValue(modulename.text, forkey: "modulename")
            attribute.setValue(notes.text, forkey: "notes")
            attribute.setValue(progressbar.text, forkey: "progressbar")
            attribute.setValue(reminder.text, forkey: "reminder")
            attribute.setValue(value.text, forkey: "value")

            try manageContext.save()

            }catch let error as NSError {
        }
}

完整代码:

    @IBOutlet weak var detailDescriptionLabel: UILabel!
    @IBOutlet weak var dueDateLabel: UITextField!
    @IBOutlet weak var value: UITextField!
    @IBOutlet weak var courseworkname: UITextField!
    @IBOutlet weak var modulename: UITextField!
    @IBOutlet weak var level: UITextField!
    @IBOutlet weak var mark: UITextField!
    @IBOutlet weak var reminder: UITextField!
    @IBOutlet weak var notes: UITextField!

    @IBAction func edit(sender: AnyObject) {

        modulename.userInteractionEnabled = true
        modulename.enabled = true 
        dueDateLabel.userInteractionEnabled = true
        value.userInteractionEnabled = true
        modulename.userInteractionEnabled = true
        level.userInteractionEnabled = true
        mark.userInteractionEnabled = true
        reminder.userInteractionEnabled = true
        notes.userInteractionEnabled = true

        //Interaction

        value.enabled = true
        dueDateLabel.enabled = true
        courseworkname.enabled = true
        modulename.enabled = true
        level.enabled = true
        mark.enabled = true
        reminder.enabled = true
        notes.enabled = true

    }

    @IBAction func update(sender: AnyObject) {

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

        let manageContext = appDelegate.managedObjectContext

        let fetchRequest = NSFetchRequest(entityName: "Coursework")

        do {

            let results = try manageContext.executeFetchRequest(fetchRequest)


            let attribute = results[0] as! NSManagedObject

            detailItem?.value = modulename.text

            attribute.setValue(courseworkname.text, forKey: "courseworkname")
       attribute.setValue(dueDateLabel.text, forKey: "duedate")
            attribute.setValue(level.text, forKey: "level")
              attribute.setValue(mark.text, forKey: "mark")
              attribute.setValue(modulename.text, forKey: "modulename")
            attribute.setValue(notes.text, forKey: "notes")
             attribute.setValue(progressbar.text, forKey: "progressbar")
                attribute.setValue(reminder.text, forKey: "reminder")
        attribute.setValue(value.text, forKey: "value")



         try manageContext.save()

        }catch let error as NSError{     

        }

    }

    var detailItem: Coursework?
         var detailItem2: Task?

            {
        didSet {
            // Update the view.
            self.configureView()
        }
    }

    func configureView() {
        // Update the user interface for the detail item.
        if let detail = self.detailItem {
            if let label = self.detailDescriptionLabel {
                label.text = detail.courseworkname
            }
            if let label = self.dueDateLabel {
                label.text = detail.duedate
            }

            if let label = self.value {
                label.text = detail.value
            }

            if let label = self.courseworkname {
                label.text = detail.courseworkname
            }

            if let label = self.modulename {
                label.text = detail.modulename
            }

            if let label = self.level {
                label.text = detail.level
            }

            if let label = self.mark {
                label.text = detail.mark
            }

            if let label = self.reminder{
                label.text = detail.reminder
            }

            if let label = self.notes{
                label.text = detail.notes

            }

        }

1 个答案:

答案 0 :(得分:0)

这是一个新属性吗?您需要在更改CoreData模型时卸载并重新安装应用程序。

还看到你没有为进度条定义IBOutlet,如果你链接它应该有用。