Скажите, у меня есть 2 NSManagedObject
с в CoreData
.
class House: NSManagedObject {}
class Location: NSManagedObject {}
У меня также есть модель данных structs
, например:
struct HouseModel {
var objectID: NSManagedObjectID
...
}
sruct LocationModel {
var objectID: NSManagedObjectID
...
}
Для каждого загруженного managedObject
Я в основном использую его атрибуты для инициализации новой структуры модели, используемой для пользовательского интерфейса и прочего (в основном, представлений коллекции)
У меня должен быть атрибут NSManagedObjectID
в structs
, чтобы можно было вносить изменения в managedObject
, которому принадлежит структура. (Я узнал, что я должен использовать mainViewContext
только для чтения, используя что-то вроде persistentContainer.performBackgroundTask
для записи. Таким образом, мне нужно NSManagedObjectID
для загрузки объектов в фоновую очередь)
Это работает, но есть проблема с этим подходом:
Я не могу инициализировать одну из этих моделей данных без managed object
. Это раздражает, когда я хочу создать фиктивные данные для тестирования пользовательского интерфейса или модульного тестирования.
Я знаю одно решение: создайте Dummy
managedObject
ровно с одним экземпляром и используйте его objectID для подобных вещей. Но мне это не очень нравится. Есть ли лучший / более удобный способ?
Я имею в виду, что я бы хотел полностью удалить атрибут objectID
, чтобы отделить CoreData
от этих моделей structs
. Но я не вижу способа сделать это. Мне нужно соединение.