2012-06-19 2 views
3

У меня есть путаница в выборе того, следует ли использовать объекты класса NSManagedObjet непосредственно в качестве моделей или создавать отдельную классность для моделей и создавать карты данных для сопоставления данных из этого класса модели с объектами класса NSManagedObject. Есть ли какой-либо вред в использовании объектов Core Data в качестве моделей? Каковы плюсы и минусы обоих утверждений?Могут ли объекты класса NSManagedObject использоваться в качестве моделей?

Спасибо заранее,

С уважением,

tek3

ответ

2

Я прочитал ваш вопрос, и я понимаю, что вы не спрашиваете, следует ли напрямую использовать NSManagedObject или подклассы NSManagedObject, но если у вас должна быть ваша модель в виде отдельных классов, которые используют Core Data с помощью явных методов, написанных вами самим.

Основные данные предназначены для использования в качестве слоя модели для вашего приложения. Я не вижу никаких реальных преимуществ в том, чтобы иметь собственные классы моделей, писать для них интерфейс и внедрять его в основные данные за кулисами, если только вам не нужна свобода полностью отказаться от основных данных в какой-то момент.

Я рекомендую вам создавать классы моделей в качестве подклассов NSManagedObject. Вы можете расширять их любым способом, который вы сочтете необходимым, помимо того, какие основные данные предоставляют вам, но в то же время ваши классы моделей будут обладать всеми преимуществами базовой структуры данных: сбои, кеширование, заверения целостности данных, каскадные удаления и т. Д. ..

+0

Привет Свена, спасибо за ответ. Но что делать, если я хочу, чтобы мой объект модели делился между разными классами. В этом случае модельные классы типа NSManagedObject не будут работать. – tek3

+0

Можете ли вы привести пример такого случая? – svena

+0

У меня есть классные встречи. Класс совещаний имеет следующие атрибуты: Организатор, список участников, местоположение и время начала. Для ввода каждой из этих данных у меня есть разные контроллеры представлений, которые толкаются один за другим. Поэтому я хотел создать объект типа Meetings и передать его следующему контроллеру представления (как свойство). Так что в итоге у меня есть объект встреч с полной информацией. Возможно ли это с объектами типа NSManagedObject. – tek3

1

Если вы просто используете NSManagedObject, вы не будете иметь преимущество удобной «dot.notation» при обращении к атрибутам и отношений.

Кроме того, вам необходимо будет восстановить все значения с помощью valueForKey и установить их с помощью setValueForKey, за которым следуют строки. Это может быть чрезвычайно склонным к ошибкам и громоздким, а полученный код не так же читабельен, как и для точечной нотации.

Наконец, в классах объектов вы можете реализовать всевозможные дополнительные функции. Где бы вы поместили этот код в противном случае? Помните принцип инкапсуляции, который помогает создавать независимый и многоразовый код.

Смежные вопросы