Управление версиями SwiftData «Невозможно использовать поэтапную миграцию с неизвестной версией модели координатора».IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Управление версиями SwiftData «Невозможно использовать поэтапную миграцию с неизвестной версией модели координатора».

Сообщение Anonymous »

Я начал разработку приложения с помощью SwiftData и недавно решил перейти на VersionedSchema, но у меня просто не получается добавить новую версию схемы с кодом = 134504 «Невозможно использовать поэтапную миграцию с неизвестной версией модели координатора».
Когда я изначально добавил версию и назвал ее v1, все работало нормально, но внесение любых изменений в будущие схемы приводит к той же ошибке. (сейчас я использую V2, но я только что удалил данные со своих устройств разработки).
import Foundation
import SwiftData

enum SchemaV2: VersionedSchema {
static var versionIdentifier: Schema.Version = Schema.Version(2, 0, 0)

static var models: [any PersistentModel.Type] {
[..., cardModel.self]
}

...other models...

@Model
final class cardModel {
var bank: bankModel
var name: String?

init(bank: bankModel, name: String? = nil) {
self.bank = bank
self.name = name
}
}
}

SchemaV3:
import Foundation
import SwiftData

enum SchemaV3: VersionedSchema {
static var versionIdentifier: Schema.Version = Schema.Version(3, 0, 0)

static var models: [any PersistentModel.Type] {
[..., cardModel.self]
}

...other models...

@Model
final class cardModel {
var bank: bankModel
var name: String?
var rewardType: RewardType?

init(bank: bankModel,
name: String? = nil,
rewardType: RewardType? = .cash
) {
self.bank = bank
self.name = name
self.rewardType = rewardType
}
}
}

План миграции:
import SwiftData

enum MigrationPlan: SchemaMigrationPlan {
static var stages: [MigrationStage] {
[
MigrateV1toV2, MigrateV2toV3
]
}

static var schemas: [any VersionedSchema.Type] {
[SchemaV1.self, SchemaV2.self, SchemaV3.self
]
}

static let MigrateV1toV2 = MigrationStage.lightweight(
fromVersion: SchemaV1.self,
toVersion: SchemaV2.self
)

// I want to use a custom migration here, but even lightweight fails

static let MigrateV2toV3 = MigrationStage.lightweight(
fromVersion: SchemaV2.self,
toVersion: SchemaV3.self)
}

Не совсем уверен, как мне действовать, поскольку у меня есть идентификатор версии в каждой схеме, и они одинаковы. Чистые сборки, перезагрузка Mac, бета-версия Xcode также были опробованы, но безуспешно. Поиск неизвестной версии модели координатора не сильно помог.
p.s. Я инициализирую SchemaV1 следующим образом:
enum SchemaV1: VersionedSchema {
static var versionIdentifier = Schema.Version(1, 0, 0) // Also tried to use such form with no luck: public static var versionIdentifier: Schema.Version {.init(1, 0, 0)}
static var models: [any PersistentModel.Type] {
[..., cardModel.self]
}
...models...
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... dinator-mo
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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