Есть ли веские причины для использования подкласса NSManagedObject для более чем одного объекта Core Data? - PullRequest
0 голосов
/ 16 марта 2011

Можно иметь один NSManagedObject подкласс, представляющий несколько сущностей базовых данных. Например, класс Thing может представлять объекты Vegetable и Blanket, даже если данные моделируются таким образом, что Vegetable и Blanket не разделяют наследие.

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

Каким может быть обоснование этого решения по проекту?

1 Ответ

1 голос
/ 16 марта 2011

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

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

Подклассы NSManagedObject на самом деле не сильно меняются.Свойства, определенные в подклассах, на самом деле являются просто обертками вокруг ассоциативного хранилища базовых классов NSManagedObject.(Это тот, к которому вы получаете доступ с помощью primativeValueForKey:. Подкласс в значительной степени удобен для обеспечения легкого доступа и любого настраиваемого поведения, которое сама модель данных не может обеспечить. Однако они сохраняют гибкость NSManagedObjects.

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

...