Modelling dependencies

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?

Well, the error occurred again between Parent and DateSpec. So, the workaround did not help. It seems that the relationship itself raises the problem.

Is it possible that the relationship MUST be an optional?

Modelling dependencies
 
 
Q