Я получаю сообщение об ошибке в Xcode:
Тип аргумента "Дата?" не соответствует ожидаемому типу ReferenceConvertible
Что означает эта ошибка? А как исправить?
ПРИМЕР:
У меня есть объект в основных данных с именем ToDoItem (Codegen: определение класса и модуль: модуль текущего продукта) и установил 2 атрибута:
- createdAt - НЕ необязательно, значение по умолчанию: текущая дата
- title - НЕ необязательно, значение по умолчанию: пустая строка
Xcode автоматически сгенерировал для меня класс:
import Foundation
import CoreData
public class ToDoItem: NSManagedObject {
}
В ContentView у меня есть этот код, в котором я передаю todoItem в EditItemView:
ForEach(toDoItems, id: \.self) {todoItem in
NavigationLink(destination: EditItemView(todoItem: todoItem)) {
ToDoItemView(title: todoItem.title ?? "", createdAt: todoItem.createdAt ?? Date())
}
И в EditItemView я получаю сообщение об ошибке в этой строке:
Text("\(todoItem.createdAt, formatter: Self.dateFormat)")
Я могу устранить эту ошибку, если использую:
Text("\(todoItem.createdAt!, formatter: Self.dateFormat)")
Но ... даже сейчас нет ошибки при создании приложения, после того как я удалю todoItem с помощью кнопки Удалить в моем приложении, приложение вылетает в той же строке с ошибкой:
Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при разворачивании необязательного значения
Я только учусь и пока знаю, что это связано с тем, что некоторые значения являются необязательными в Swift, даже если они не являются необязательными в Core Data. И я прочитал это разворачивание необязательных значений с помощью! следует избегать в большинстве случаев. Но все же я не знаю, как решить эту проблему. Как использовать todoItem.createdAt, если todoItem.createdAt не работает и todoItem.createdAt! вылетает приложение.