Вот концептуальный пример того, как мне хотелось бы, чтобы результат выглядел (примечание: это не будет компилироваться как есть; это просто иллюстрация идеи):
Код: Выделить всё
import CoreAddress
@Model public class Address: CoreAddress {
// App-specific relationships
@Relationship(deleteRule: .cascade, inverse: \Department.address) var department: Department?
var person: Person?
}
@Model open class CoreAddress: Fetchable {
// Shared properties for all apps
public var city: String?
public var country: Country?
public var id: UUID?
public var label: String?
public var latitude: Double? = 0.0
public var longitude: Double? = 0.0
public var streetName: String?
public var streetNumber: String?
public var zipCode: String?
public var cityKey: String?
public var placeName: String?
public var furtherStreet: String?
public var district: String?
public var county: String?
required public init() { }
}
- находится в пакете Swift и содержит все общие свойства.
Код: Выделить всё
CoreAddress - Каждое приложение добавляет свои собственные связи (например, отдел или человек).
- Используйте ModelContainer в каждом приложении, чтобы включать как общие, так и специфичные для приложения модели.
Проблема:
Я не знаю лучший подход для:
- Структурирования моделей SwiftData в пакете Swift.
- Избегайте дублирования определений модели в нескольких приложениях.
- Заставьте ModelContainer распознавать как общую модель, так и отношения, специфичные для приложения.
Есть кто-нибудь успешно это сделал? Какие шаблоны сработали для вас?
Подробнее здесь: https://stackoverflow.com/questions/798 ... er-while-d
Мобильная версия