RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1281935
Accepted
Иван Маслов
Иван Маслов
Asked:2022-05-14 21:03:34 +0000 UTC2022-05-14 21:03:34 +0000 UTC 2022-05-14 21:03:34 +0000 UTC

在控制器之间同步和传输 CoreData 数据

  • 772
    Всем привет! У меня возник вопрос, как передавать данные из разных контроллеров в Entity? В приложении есть несколько контроллеров. По мере перехода от одного контроллера к другому инициализируются свойства Core Data. На данный момент данные, полученные в одном контроллере, пропадают при переходе на следующий. Как их сохранить и передать в другой контроллер? Вариант с массивом мне не подходит, кроме как в ScheduleViewController, где я отображаю список занятий. Мой код:
         '''
        //Здесь данные сохраняются
            private var teacher = Teacher()
            private var student = Student()
            
            override func viewDidLoad() {
                super.viewDidLoad()
               
                teacher = Teacher(context: context)
                student = Student(context: context)
            }
            
            private func savePassword () {
                
                if let text = teacherPasswordTextField.text,
                   text.count > 5 {
                    
                    do {
                        
                        teacher.name = teacherNameLabel.text
                        teacher.password = text
                        student.teacher = teacher
                        teacher.customers?.adding(student)
                        try context.save()
                        
                    }
                    
                    catch {
                        print(error.localizedDescription)
                    }
                }
            }
                  
          extension TeacherSignInViewController: UITextFieldDelegate {
            
            func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                savePassword()
                textField.resignFirstResponder()
                return teacherPasswordTextField.text!.count > 5
            }
        }
        '''
        // А здесь нет
         private func setUpTextFields () {
                nameTextField.delegate = self
                nameTextField.keyboardType = .namePhonePad
                
                passwordTextField.delegate = self
                passwordTextField.keyboardType = .namePhonePad
                
                /* MARK: Uncomment this line when publishing */
                // passwordTextField.isSecureTextEntry = true
                
            }
            
            private func fetchData () {
                
                guard teacher.name != nil,
                    teacher.password != nil
                
                else {
                    return
                }
                
                do {
                    
                    student.name = nameTextField.text
                    student.password = passwordTextField.text
                    try context.save()
                }
                
                catch {
                    print(error.localizedDescription)
                }
                
            }
        }
        
        extension RegistrationViewController: UITextFieldDelegate {
            
            func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                
                guard let text = textField.text else { return false }
                
                if textField == nameTextField && text.count > 3 {
                    passwordTextField.becomeFirstResponder()
                }
                
                if textField == passwordTextField && text.count > 5 {
                    textField.resignFirstResponder()
                }
             
                fetchData()
                
                return nameTextField.text!.count > 3 && passwordTextField.text!.count > 5
            
        }
        }
        '''
       
        @IBAction private func completionButtonTouchUpInside(_ sender: UIButton) {
        
                delegate?.lessonViewControllerDidSet(self)
                  dismiss(animated: true, completion: nil)
                
            }
        
        '''
         //Сюда переходит учитель после регистрации. Его данные после перехода сбрасываются
extension ScheduleViewController: LessonViewControllerDelegate {
            
            func lessonViewControllerDidSet(_ vc: LessonViewController) {
              
                let lesson = Lesson(context: context)
               
                lesson.date = vc.datePicker.date
                lesson.time = vc.timePicker.date
                lesson.subject = vc.subjectTextField.text
                
                guard 
                    teacher.name != nil,
                    teacher.password != nil
                else
                {
                    return
                }
                
                teacher.addToSchedule(lesson)
                lesson.teacherSchedule = teacher
                
                do {
                    try context.save()
                }
                catch {
                    print(error.localizedDescription)
                }
          
     DispatchQueue.main.async {
                self.tableView.reloadData()
            }
    
      '''
        
          [1]: https://isstatic.askoverflow.dev/V2Zb4.png
          [2]: https://isstatic.askoverflow.dev/uMHu1.png
swift
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Oleg Soloviev
    2022-05-16T01:28:51Z2022-05-16T01:28:51Z

    试试这样:

    private func getLesson(for index: Int) -> Lesson? {
    
        let fetch: NSFetchRequest<Lesson> = Lesson.fetchRequest()
        var lessons = [Lesson]()
    
        do {
            lessons = try context.fetch(fetch)
        }
        catch {
            debugPrint(error.localizedDescription)
        }
        guard lessons.count > index else { return nil }
        return lessons[index]
    }
    

    但是您仍然需要注册链接老师->课程

    • 1

相关问题

  • Swift函数:等待数据接收后再返回结果

  • 我在哪里可以找到 SpriteKit 课程/教师/导师?

  • 如果部分中的单元格为空,如何在 tableView 中隐藏部分 SWIFT

  • UITableView 创建部分的问题

  • DataSource 不会在 CollectionView.reloadData() 上触发

  • 无法开启定时器

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5