Абстрактная сущность и типы для редактирования NSManagedObject?

#swift #core-data

#swift #core-данные

Вопрос:

Я пытаюсь создать ViewController, который обрабатывает редактирование двух разных объектов, которые оба имеют один и тот же абстрактный родительский объект.

Мне любопытно, возможно ли это? Поскольку я считаю, что абстрактные сущности не должны инициализироваться? Или, если бы был лучший способ сделать это с помощью чего-то вроде typealias?

На данный момент у меня есть отложенная переменная для обоих дочерних объектов, и я настраиваю VC на основе оператора switch на VC, который выполнил переход. Все это также находится внутри дочернего контекста.

Спасибо.

Ответ №1:

Это зависит от того, какие атрибуты вы хотите редактировать в этом контроллере представления, и насколько сложным вы хотите, чтобы контроллер представления был.

Если вы хотите редактировать только атрибуты, принадлежащие абстрактному родительскому элементу, это должно быть легко. Дайте контроллеру представления переменную того же типа, что и абстрактный родительский элемент. Затем присвойте этой переменной любой экземпляр дочерней сущности. В качестве тривиального примера, может быть, ваш родительский объект Building и у вас есть дочерние объекты, называемые House and Restaurant . Ваш контроллер представления редактирует только адрес, который является частью Building . Итак, добавьте переменную в контроллер представления типа Building , а затем назначьте либо a House , либо a Restaurant в качестве значения, и это должно просто работать. Вы никогда не создаете экземпляр Building напрямую, но поскольку другие наследуют от него, у вас может быть переменная с этим типом.

Если вам нужно отредактировать атрибуты, принадлежащие дочерним объектам, это сложнее. Вашему контроллеру представления потребуется определить конкретную сущность, чтобы он знал, что можно редактировать. Если две дочерние сущности не очень похожи, это может привести к беспорядку.

Комментарии:

1. Привет, Том, большое тебе спасибо. Это похоже на то, что я пытаюсь сделать. Это имеет смысл, я просто не был уверен, что это возможно, хотя и предполагал. — Последний вопрос, я предполагаю, что все остальные детали остаются прежними? Даже тот, который или специфичен для суб-сущности? Поскольку они не изменены. Это правильно?

2. Если вы не измените значения атрибутов, они не изменятся.

3. Потрясающе! Спасибо! Время для рефакторинга!