Как повторно использовать модели SwiftData в нескольких приложениях с помощью диспетчера пакетов Swift, определяя при этIOS

Программируем под IOS
Ответить
Anonymous
 Как повторно использовать модели SwiftData в нескольких приложениях с помощью диспетчера пакетов Swift, определяя при эт

Сообщение Anonymous »

Я пытаюсь повторно использовать модели SwiftData в нескольких приложениях без дублирования кода. В частности, я хочу, чтобы такая модель, как Адрес, жила в пакете Swift, а каждое приложение могло определять свои собственные связи.
Вот концептуальный пример того, как мне хотелось бы, чтобы результат выглядел (примечание: это не будет компилироваться как есть; это просто иллюстрация идеи):

Код: Выделить всё

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() { }
}
Цель/идея:
  • Код: Выделить всё

    CoreAddress
    находится в пакете Swift и содержит все общие свойства.
  • Каждое приложение добавляет свои собственные связи (например, отдел или человек).
  • Используйте ModelContainer в каждом приложении, чтобы включать как общие, так и специфичные для приложения модели.
Я знаю, что мог бы сделать что-то подобное с протоколы, но я хочу избежать накладных расходов на постоянное изменение всех моделей при каждом изменении — это не кажется чистым или поддерживаемым.
Проблема:

Я не знаю лучший подход для:
  • Структурирования моделей SwiftData в пакете Swift.
  • Избегайте дублирования определений модели в нескольких приложениях.
  • Заставьте ModelContainer распознавать как общую модель, так и отношения, специфичные для приложения.
По сути, мне нужен чистый способ совместного использования постоянных моделей между приложениями, но при этом позволяющий каждому приложению настраивать отношения без переписывания модели.
Есть кто-нибудь успешно это сделал? Какие шаблоны сработали для вас?

Подробнее здесь: https://stackoverflow.com/questions/798 ... er-while-d
Ответить

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

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

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

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

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