Отношения Swift один к одному вылетают при попытке инициализацииIOS

Программируем под IOS
Ответить
Anonymous
 Отношения Swift один к одному вылетают при попытке инициализации

Сообщение Anonymous »

@Model
class Habit: Identifiable {
@Attribute(.unique) var id: UUID = UUID()
@Relationship(deleteRule: .cascade) var completedDays: CompletedDays?
var name: String = ""
var color: String = ""

init(completedDays: CompletedDays? = nil, name: String, color: String) {
self.completedDays = completedDays
self.name = name
self.color = color
}
}

@Model
class CompletedDays {
@Relationship(inverse: \Habit.completedDays) var habit: Habit?
var days: [Int: [Int: [Int]]] = [:]

init(habit: Habit? = nil) {
self.habit = habit
}
}

В моем приложении каждая привычка имеет словарь завершенных дней, например: [годы[месяцы[дни]]]. Вы можете нажать на день, и он будет выделен. Этот словарь содержит все выделенные даты.
Мой друг предложил отделить словарь CompletedDays от модели Habit. Таким образом, я могу загружать названия и цвета привычек без необходимости одновременной загрузки в память всех их словарей CompletedDays.
Поэтому я попробовал выделить их в собственную модель под названием CompletedDays. со словарем дней. Таким образом я могу сделать это: @Query var listHabits: [Habit], который, я надеюсь, не загрузит в память все словари CompleteDays, а только ссылки на них.
Но если я попытаюсь инициализировать новую привычку, используя указанный ниже метод, приложение выйдет из строя.
// create new habit
let name = "test"
let color = "8cb6fa"
let habit = Habit(name: name, color: color)
let completedDays = CompletedDays(habit: habit)
print("The app should crash now...")
habit.completedDays = completedDays //

Подробнее здесь: https://stackoverflow.com/questions/790 ... -intialize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»