【问题标题】:Fatal error editing core data objects编辑核心数据对象的致命错误
【发布时间】:2016-05-18 21:51:53
【问题描述】:

我是编程新手。使用 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

            }

        }

【问题讨论】:

  • 这个错误发生在哪一行?
  • 你能显示你用来获取这些值的变量和/或 IBOutlets 吗?
  • 添加了完整的代码。发生在行 attribute.setValue(progressbar.text, forKey: "progress bar") -bad execution

标签: xcode swift core-data


【解决方案1】:

它是一个新属性吗?更改 CoreData 模型时,您必须卸载并重新安装应用程序。

还刚刚看到您没有为进度条定义 IBOutlet,如果您链​​接它应该可以工作。

【讨论】:

  • 请查看URL这将有助于提升您的内容质量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2020-10-26
相关资源
最近更新 更多