I'm stuck at an error EXC_BREAKPOINT (code=1, subcode=0x1a8d69a38)
that is thrown in a class during initialization.
The class is defined as:
@Model
public final class Parent {
@Attribute(.unique)
public var uuid: UUID
/// The date specification.
@Relationship(.cascade)
public var dateSpec: DateSpec
/// The title.
public var title: Title
/// The subtitle.
public var subTitle: Subtitle
public init(uuid: UUID,
dateSpec: DateSpec,
title: Title,
subTitle: Subtitle) {
self.uuid = uuid
self.dateSpec = dateSpec
self.title = title
self.subTitle = subTitle
}
}
The error is thrown in the var dateSpec
property at the return self.getValue(for: \.dateSpec)
call of the @PersistedProperty
macro.
DateSpec
is defined this way:
@Model
public final class DateSpec {
@Attribute(.unique)
public var uuid: UUID
/// The type of the date specification (`.point` or `.range`).
public var type: DateSpecType
@Relationship(.cascade)
public var point: DatePoint
@Relationship(.cascade)
public var range: DateRange
public init(uuid: UUID,
type: DateSpecType = .none,
point: DatePoint = .init(),
range: DateRange = .init()) {
self.uuid = uuid
self.type = type
self.point = point
self.range = range
}
}
And DatePoint
is defined so:
@Model
public final class DatePoint {
@Attribute(.unique)
public var uuid: UUID
public var format: String
public var date: Date?
public init(uuid: UUID,
format: String,
date: Date? = nil) {
self.uuid = uuid
self.format = format
self.date = date
}
}
(DateRange
accordingly).
So, as far as I understood the sessions, this should work. Or did I miss something?
-- Edit:
When taking out DatePoint
and DateRange
from the model, and replacing the properties by .transient
wrappers that get/set the respective properties directly in DateSpec
, then the error disappears.
So, is the problem the cascading of the relationships between Parent
and DateSpec
, and DateSpec
and DatePoint/DateRange
?