Как я могу использовать одну и ту же модель в SwiftData для двух разных ModelContainers? ⇐ IOS
-
Anonymous
Как я могу использовать одну и ту же модель в SwiftData для двух разных ModelContainers?
Я хочу реализовать корзину для своего приложения. Используя очень простую модель, я хочу хранить активные элементы в одном 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() }
Я хочу реализовать корзину для своего приложения. Используя очень простую модель, я хочу хранить активные элементы в одном 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() }
Мобильная версия