Для обновления данных Core Data из ячеек таблицы в Swift 3 мы можем использовать методы делегата UITableViewDelegate - tableView(_:didSelectRowAt:). В этом методе мы будем получать выбранную ячейку и затем выполнять обновление данных Core Data.
Вот пример кода:
1. Создайте модель данных Core Data и сгенерируйте класс сущности (например, "Person").
2. Создайте таблицу с ячейками для отображения данных из Core Data.
3. Установите делегат UITableViewDelegate для вашей таблицы.
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableView: UITableView! var people: [Person] = [] let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } // Загрузка данных из Core Data в массив people. func loadData() { let request: NSFetchRequest<Person> = Person.fetchRequest() do { people = try context.fetch(request) } catch { print("Ошибка при загрузке данных из Core Data: (error)") } tableView.reloadData() } // Обновление данных Core Data при выборе ячейки. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let person = people[indexPath.row] // Определите, какое поле данных требуется обновить, и выполните обновление. person.name = "Новое имя" person.age = 25 // Сохраните внесенные изменения в Core Data. do { try context.save() } catch { print("Ошибка при сохранении данных в Core Data: (error)") } loadData() // Загрузите данные заново, чтобы отобразить обновленные данные в таблице. } // Остальные методы делегата и источника данных таблицы... // Количество секций в таблице. func numberOfSections(in tableView: UITableView) -> Int { return 1 } // Количество ячеек в секции. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return people.count } // Настройка каждой ячейки. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) let person = people[indexPath.row] cell.textLabel?.text = person.name cell.detailTextLabel?.text = "(person.age)" return cell } }
В этом примере мы использовали метод didSelectRowAt(_:), чтобы получить выбранную ячейку и затем обновить соответствующий объект Person в Core Data. Затем мы сохраняем внесенные изменения в Core Data и загружаем данные заново, чтобы отобразить обновленные данные в таблице.
Обратите внимание, что вам нужно настроить соответствующие атрибуты объекта Person в методе tableView(_:cellForRowAt:), чтобы отобразить данные из Core Data в ячейках таблицы.