Как я могу использовать одну и ту же модель в SwiftData для двух разных ModelContainers?IOS

Программируем под IOS
Ответить
Anonymous
 Как я могу использовать одну и ту же модель в SwiftData для двух разных ModelContainers?

Сообщение Anonymous »


Я хочу реализовать корзину для своего приложения. Используя очень простую модель, я хочу хранить активные элементы в одном ModelContainer, а удаленные — в другом.

Чтобы получить доступ к контейнерам, я написал синглтон.

импортировать SwiftData класс DataHolder { статический let SharedInstance = DataHolder() пусть activeContainer:ModelContainer пусть мусорКонтейнер:МодельКонтейнер частный инициализации () { пусть схема = Схема([Song.self]) let storeURL = URL.documentsDirectory.appending(путь: "active.sqlite") пусть конфигурация = ModelConfiguration (url: storeURL) пусть контейнер = попробуйте! ModelContainer (для: схема, конфигурации: конфигурация) self.activeContainer = контейнер; let SchemaTrash = Schema([Song.self]) let storeURLTrash = URL.documentsDirectory.appending(путь: "trash.sqlite") пусть configTrash = ModelConfiguration (url: storeURLTrash) letContainerTrash = попробуй! ModelContainer (для:schemaTrash, конфигурации: configTrash) self.trashContainer = контейнерTrash; print("инициализация модели данных") } } Но когда я пытаюсь сохранить активную модель контейнера, приложение вылетает.

Неустранимая ошибка: «попробуй!» выражение неожиданно вызвало ошибку: Error Domain=NSCocoaErrorDomain Code=134020 «Конфигурация модели, использованная для открытия магазина, несовместима с той, которая использовалась для создания магазина». Я пытался добавить имя и изменить место хранения, но ничего не помогло. Есть ли другой подход к реализации такой функции?

Я знаю, как создать два хранилища одной и той же модели SwiftData? Но предложенное решение в моем случае не работает.

Изменить:

Приложение вышло из строя после вставки нового элемента:
Задача { пусть newSong = Song(); ждут DataHolder.sharedInstance.activeContainer.mainContext.insert(newSong) пытаться! ждут DataHolder.sharedInstance.activeContainer.mainContext.save() }
Ответить

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

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

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

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

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