У меня есть некоторые проблемы с CoreData Swift в iOS - PullRequest
0 голосов
/ 06 апреля 2020

У меня возникла проблема с NotificationCenter.default.addObserver. На первой странице у меня появляется Note tableView, когда я нажимаю элемент tableView, показываю этот контроллер «NoteDetailsViewController». в NoteDetailsViewController я не могу получить экземпляр заметки, подобный этому self.note?.noteCategory //return nil. PS Я сохранил элемент заметки в Core Data persistentStore.

import UIKit
import CoreData

class NoteDetailsViewController: UIViewController, ManagedObjectContextDependentType {


    var note: Note?
    var managedObjectContext: NSManagedObjectContext!


    @IBOutlet weak var noteCategoryLabel: UILabel!
    @IBOutlet weak var fromLabel: UILabel!
    @IBOutlet weak var messageTextView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(forName: NSNotification.Name.NSManagedObjectContextDidSave,
                                               object: nil,
                                               queue: nil,
                                               using:
            {
                (notification: Notification) in
                if let updatedNotes = notification.userInfo?[NSUpdatedObjectsKey] as? Set<Note> {
                    self.note = updatedNotes.first
                   self.setUIValues()
                }
        })

        setUIValues()
    }


    deinit {
        NotificationCenter.default.removeObserver(self,
                                                  name: NSNotification.Name.NSManagedObjectContextDidSave,
                                                  object: nil)

func setUIValues() {
    self.noteCategoryLabel.text = self.note?.noteCategory //this line return nil
    self.messageTextView.text = self.note?.message //this line return nil
    self.fromLabel.text = self.note?.from //this line return nil
}
...