Хорошо, во-первых, я думаю, у вас здесь есть концептуальная проблема, потому что я никогда не видел необходимости в сущности со 100 атрибутами.Большинство сущностей имеют около полдюжины атрибутов, и я думаю, что самое большее, что я когда-либо видел, было около 20.
Базовые данные - это, прежде всего, система управления графами объектов, с опорой на постоянство.Он предназначен для реализации модельного уровня конструкции Model-View-Controller (MVC).Таким образом, Core Data в первую очередь касается данных моделирования, а не их хранения.
Объекты предназначены для представления какого-либо реального объекта, условия или события.Существует не так много реальных вещей, которые имеют 100 атрибутов.Например, вы хотите сделать детальную модель человека.Вам нужны такие вещи, как имя, фамилия, адрес (с атрибутами для каждого компонента адреса), водительские права № и дата выдачи, место работы с адресом, номер социального страхования и т. Д. Если вы пытались объединить все это в один Person
сущность, вы можете получить десятки атрибутов.Однако, если вы внимательно посмотрите на данные, которые вы моделируете, и на взаимосвязи внутри данных, вы заметите, что в реальном мире адреса, водительские права, места работы и т. Д. На самом деле не атрибуты реальных людей, а скорее другие реальные объекты. относится к реальным людям.Следовательно, лучшим подходом было бы разделение атрибутов для этих объектов на отдельные объекты и создание связей с объектом Person.Это делает модель более реалистичной.В конце концов, более одного человека могут жить по одному адресу или работать в одном месте.
Итак, вам, вероятно, нужно начать все с нуля и переосмыслить дизайн модели данных.
Убедитесь, что вы понимаете разницу между сущностями и управляемыми объектами.Объекты являются абстрактными и служат просто для определения ключей, типов значений и отношений для управляемых объектов.Объекты - это управляемые объекты, а классы - экземплярам.
У вас есть две другие проблемы:
(1) Вы можете использовать формы доступа к синтаксису с точками, например parentInfo.ParentToChild.Kid
, если вы определили собственные подклассы NSManagedObject для ваших сущностей.В противном случае вы используете универсальные экземпляры NSManagedObject и должны использовать методы ключ-значение, например [parent setvalue:forKey]
.
(2) Извлечение возвращает только объекты одного объекта.Так что если у вас есть родительский объект и дочерний объект.Каждый выбор возвращает экземпляры Parent или Child, но не оба одновременно (если они оба не наследуют сущность выборки).