Я пытаюсь использовать CoreData
в своей Cocoa Touch Framework. В качестве примера я создаю простой проект: https://github.com/JakubMazur/SO41698466
В основном я делаю это по шагам:
- Создайте фреймворк с модульными тестами
- Добавить
CoreData
в проектsomeDataModel
- Заполните
CoreData
какой-нибудь фиктивной сущностью и измените модуль наCurrent Product Module
- Затем я создал
SomeClass
для начала, и он в основном называется:
.
public class func entityCreation() {
Entity(context: CoreDataClass().persistentContainer.viewContext)
}
Итак, с этим lazy
автоматически сгенерированным кодом из CoreData это должно создать модель.
- В тесте я написал:
.
func testExample() {
SomeClass.entityCreation()
}
- И запустить тест
- В
CoreDataClass
я поставил точку останова ниже строки:let container = NSPersistentContainer(name: "someDataModel")
и затем я вижу в консоли:
[ошибка] ошибка: не удалось загрузить модель с именем someDataModel CoreData: ошибка: не удалось загрузить модель с именем someDataModel
Итак, у меня есть 2 вопроса:
- Можно ли включить основные данные внутри фреймворка
- Если 1 верно, может быть, мне следует использовать другое имя
NSPersistentContainer
? Есть способ проверить, что я должен туда положить?
Загрузите проект здесь: https://github.com/JakubMazur/SO41698466
Решение найдено и добавлено ниже
let modelURL = Bundle(for: type(of: self)).url(forResource: "someDataModel", withExtension: "momd")!
let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)
let container = NSPersistentContainer(name: "someDataModel", managedObjectModel: managedObjectModel!)