Я настраиваю очень простую функцию приложения, такую как список задач / блокнот, где пользователи добавляют пустую ячейку в UITableView.Ячейка будет содержать системное время, когда была создана строка заметки, и может вводить свою заметку в textField.
Мне удалось настроить приложение, добавив пустую ячейку со статическим системным временем и удерживая текстоднако в textField после многих поисков я просто не могу понять, как сохранить / сделать постоянным значение textFields после того, как пользователь закончил редактирование или добавляет новую ячейку заметки.
Я попытался изменить путьв котором я добавил ячейки в постоянный контейнер, однако это не сообщит приложению, какая ячейка обновляется, просто создайте новую.
Мне не разрешено публиковать изображение, поэтому вот мое описание: Это UITableView с панелью «Добавить» с правой стороны и ячейкой, содержащей UIlabel, содержащий (systemTime) слева и textField (noteLine), заполняющий правую часть ячейки.
|--------------------------------------|
| notepad + |
|--------------------------------------|
|Prototype cell |
|--------------------------------------|
|12:17:12 |***textField*** ||
| |
| |
| |
| |
| |
| |
| |
| |
|______________________________________|
Мои Vars:
var frc: NSFetchedResultsController = NSFetchedResultsController<NSFetchRequestResult>()
var pc = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
Вот мой код, добавляющий новую «строку заметки»
func newNoteline() {
let entityDescription = NSEntityDescription.entity(forEntityName: "Entity", in: pc)
let item = Entity(entity: entityDescription!, insertInto: pc)
item.notesheetLine = "Test"
item.timenoteline = timeOutlet.text
do {
try pc.save()
} catch {
print(error)
return
}
self.tableView.reloadData()
}
Из этого я попыталсяследующее, чтобы сохранить, но это не работает - я предполагаю, потому что я не говорю приложению, какую ячейку обновлять.
func save() {
let entityDescription = NSEntityDescription.entity(forEntityName: "Entity", in: pc)
let item = Entity(entity: entityDescription!, insertInto: pc)
item.notesheetLine = "Test Save"
do {
try pc.save()
} catch {
print(error)
return
}
self.tableView.reloadData()
}
Я тоже пробовал это, но опять не повезло:
func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {
let noteline = tableView.dequeueReusableCell(withIdentifier: "notelineIdentifier", for: indexPath!) as! notesheetTableViewCell
let item = frc.object(at: indexPath!) as! Entity
item.timeLine = noteline.timeLineOutlet.text
do {
try pc.save()
} catch {
print(error)
return
}
}
В настоящее время я могу создать новую клеточную линию, которая содержит правильное время.Оно остается постоянным при перезапуске приложения, но когда я редактирую значение ячейки, оно очищается, как только я отменяю выбор ячейки или создаю новую линию ячейки.
Так что кто-то может избавить меня от моих страданий и сказать мне, что /если есть функция, позволяющая пользователю выбрать текстовое поле в ячейке, отредактируйте его, и как только пользователь закончит редактирование, он обновит значение coreData значением textField.