Попытка получить и обновить конкретную сущность c Core Data в представлении master-detail - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь получить указанный c экземпляр элемента в списке, но не могу вспомнить лучший способ сделать это. Это находится в подробном представлении главного списка подробностей, который, когда текст заканчивается, он обновляет элемент в основном списке. Тем не менее, я не могу заставить его обновить нужный элемент, я знаю, что он лежит в этой части моего кода:

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
                    return
                }
                let context = appDelegate.persistentContainer.viewContext

                let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "Event")

                do {

                    let test = try context.fetch(fetchRequest)
                    let objectUpdate = test[0] as! NSManagedObject
                    objectUpdate.setValue(noteText.text, forKey: "title")
                    do {
                        try context.save()
                    }
                } catch {
                    let nserror = error as NSError
                    fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
                }

В частности, эта часть:

let test = try context.fetch(fetchRequest)
                        let objectUpdate = test[0] as! NSManagedObject
                        objectUpdate.setValue(noteText.text, forKey: "title")

РЕДАКТИРОВАТЬ:

Я забыл опубликовать вопрос! В основном с этим текущим методом, когда я заканчиваю sh, набрав в текстовом поле (это обернуто в функцию textFieldDidEndEditing), он сохраняет, но на самом низком элементе в основной таблице. Я хочу, чтобы он обновил выбранный элемент.

Поскольку я пытаюсь извлечь элемент из таблицы и обновить его, какой метод лучше всего подходит для этого? Я предполагаю, что мне нужно идентифицировать правильный предмет, но я не уверен в лучшем способе для этого.

1 Ответ

0 голосов
/ 08 января 2020

Я все исправил, я вызвал объект coredata как переменную, а затем передал его с помощью segue. тогда все, что мне нужно было сделать, это сделать selectedNote?.title = noteText.text

Это полный полный код:

var selectedEvent: Event? = nil

@IBAction func textFieldEndEdit(_ sender: Any) {
        print("edit end")
        
          guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
                    return
                }
                let context = appDelegate.persistentContainer.viewContext

                
                do {

                    
                    selectedEvent?.title = noteText.text
                    
                    do {
                        try context.save()
                    }
                    
                } catch {
                    let nserror = error as NSError
                    fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
                }
        
    }
...