有没有办法通过按下条形按钮项目来更新核心数据模型中的对象?

问题描述

我的目标是在编辑文本后按下完成按钮来更新核心数据中的对象。

完成按钮和下面的文本字段:

enter image description here

这是我的一些代码,

@objc func doneTapped() {

    
    do {
        try context.save()
    } catch {
        print("Error saving the new information \(error)")
    }
    
    dateEditableTextF.resignFirstResponder()
    selectedEventDate = dateEditableTextF.text
    dateEditableTextF.isEnabled = false
    
    costEditableTextF.resignFirstResponder()
    selectedEventCost = costEditableTextF.text
    costEditableTextF.isEnabled = false
    
    
    gradesEditableTextF.resignFirstResponder()
    selectedEventGrade = gradesEditableTextF.text
    gradesEditableTextF.isEnabled = false
    
    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit,target: self,action: #selector(editTapped))
    
  
}

我希望当我在编辑文本字段后运行应用程序时按下完成按钮时,信息会更新,而当我返回到视图控制器时,信息会相同并且我的核心数据数据库会更新具有该对象的更新属性。

实际发生的情况是,当我完成编辑文本字段时,视图控制器中的数据会更新,但是当我离开视图控制器并返回时,数据会恢复到旧条目。

我看了大约 4 个关于 crud 方法的 youtube 视频,它们都是不同的场景,与我的不匹配,所以我希望这里有人可以提供帮助。提前致谢。

这是我的视图控制器的其余部分。

    @IBOutlet weak var costEditableTextF: UITextField!
    @IBOutlet weak var dateEditableTextF: UITextField!
    @IBOutlet weak var gradesEditableTextF: UITextField!
    
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    
    var updateTheEvents = [Event]()
    
    var selectedEventName: String?
    var selectedEventDate: String?
    var selectedEventCost: String?
    var selectedEventGrade: String?
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        
        navigationItem.title = selectedEventName
        navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit,action: #selector(editTapped))
     
        
     
        
        if let dateToLoad = selectedEventDate {
            dateEditableTextF.text = selectedEventDate
        }
        
        if let costToLoad = selectedEventCost {
            costEditableTextF.text = selectedEventCost
        }
        
        if let gradesToLoad = selectedEventGrade {
            gradesEditableTextF.text = selectedEventGrade
        }

        // Do any additional setup after loading the view.
    }
    
    
   @objc func editTapped() {
    
   
    dateEditableTextF.becomeFirstResponder()
    dateEditableTextF.isEnabled = true
    costEditableTextF.isEnabled = true
    gradesEditableTextF.isEnabled = true
    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done,action: #selector(doneTapped))
    
        
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)