Я новичок в iOS dev / Core Data, и у меня возникли проблемы с реализацией одной части моего рабочего процесса в моем приложении. См. Ниже:
Свойства основных данных:
- item
Атрибуты: название, сумма, дата, статус, категория (отн.), Примечание (отн.)
примечание
- Атрибуты: title, contents, createdAt, updatedAt, item (rel)
Когда пользователь создает новый элемент, требуются все атрибуты, кроме .note, поскольку я хотел бы дать пользователю возможность создать заметку позже, если это необходимо.
Что я хочу выполнить sh:
- Пользователь выбирает строку для отображения сведений об элементе
- При просмотре сведений об элементе пользователь выбирает заметки (выделены желтым цветом выше) до go для добавления / редактирования заметок
- Примечание - это всего лишь один объект, который пользователь может ввести / обновить нота. Итак, по сути, одна заметка на элемент.
МОЙ КОД
Xcode 11.5, Swift 5
import UIKit
import CoreData
class NoteVC: UIViewController, UITextFieldDelegate, UITextViewDelegate {
//MARK: - Core Data
var item: Item?
var context: NSManagedObjectContext!
//MARK: - Outlets
@IBOutlet weak var headerContainer: UIView!
@IBOutlet weak var headerTitle: UILabel!
@IBOutlet weak var noteView: UIView!
@IBOutlet weak var noteTitleTextField: UITextField!
@IBOutlet weak var noteContentTextView: UITextView!
@IBOutlet weak var noteDataLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
setupView()
}
override func viewWillDisappear(_ animated: Bool) {
super .viewWillDisappear(animated)
//Update note
if let title = noteTitleTextField.text, !title.isEmpty {
item?.notes?.title = title
item?.notes?.contents = noteContentTextView.text
}
item?.notes?.updatedAt = Date()
item?.notes?.contents = noteContentTextView.text
}
private func setupView() {
noteTitleTextField.text = item?.notes?.title
noteContentTextView.text = item?.notes?.contents
noteDataLabel.text = DateHelper.convertDate(date: Date())
}
//MARK: - Actions
@IBAction func doneButtonTapped(_ sender: UIButton) {
item?.notes?.title = noteTitleTextField.text
item?.notes?.contents = noteContentTextView.text
item?.notes?.createdAt = Date()
dismiss(animated: true)
}
}
МОЯ ПРОБЛЕМА
У меня возникла проблема с созданием новой заметки и ее назначением этому элементу и, следовательно, с заполнением сведений о заметке для редактирования. Мне удалось успешно установить атрибуты для item.date, .category на другой контроллер модального представления (так что передача данных работает), но безрезультатно с Notes. Не уверен, из-за отношений или нет. Опять же, я новичок в Core Data, поэтому, пожалуйста, простите меня за то, что это звучит просто.
Любая помощь приветствуется.
Спрашивает друга, = P
adrapp