2013-03-21 10 views
0

У меня возникло недоразумение с использованием CoreData и .Понимание CoreData с использованием отношения

Что я помню со времен моего SQL (в давно ...) я должен добавить и ID друг таблиц, которые будут записью, которые делают отношения между таблицами.

Ниже приводится обзор того, как выглядят мои таблицы в моих CoreData (сущностях).

Epro_Sheet это мой основной стол, остальные должны быть связаны с этим.

Что я хочу сделать, это что:

  • Пользователь заполняет поля на UIViewController (EPro_CompanyViewController), который имеет свой собственный Entity EPro_Company
  • Затем, когда он нажмите рядом - это создать EPro_Sheet, увеличиваем idSheet и заполните остальные записи - кроме того, EPro_Company заполнены текстом полей EPro_CompanyViewController.
  • Затем пользователь заполнит поля из EPro_DaFroidViewController, а затем, когда он нажмите рядом это заполнить объект EPro_DaFroid получить текущий идентификатор текущего EPro_Sheet и установить его на EPro_DaFroid ...
  • Etc ....
  • Там будет UIViewController (History), который позволяет пользователю получать всю информацию определенной даты, чтобы отредактировать ее или отобразить.

Не могли бы вы помочь мне на пути, как это сделать? отношения или совсем нет ... если есть отношения, как я могу получить информацию с помощью NSPredicateFormat, например: получить всю информацию с даты @ "....";

благодарит за помощь!

enter image description here

+1

Каков ваш * конкретный вопрос? – mvp

+0

Да. Как сказал MVP, объясните свой запрос коротким и понятным, тогда только u получит быстрый ответ. – Ganapathy

ответ

1

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

Core-data vs RDBMS

и здесь

The differences between Core Data and a Database

Если Вы хотите реализовать отношения в колонковых данных вы должны создать отношения в core- модель данных. Представьте, у вас есть отношения, как это:

< Student - >> Раздел

один студент т.е. принадлежит к одной секции и одной секции может иметь много учеников. Затем в вашей модели данных ядра вы можете определить отношение (скажем oneSection) от Студента к разделу, которое является взаимно-однозначным и другим отношением (скажем manyStudents) от Секции к Студенту, который является одним-ко-многим. И тогда вы устанавливаете взаимосвязь как обратную взаимосвязь между собой.

Хотя мы объявляем это как отношение, он в значительной степени действует как свойство управляемого объекта.

Так что если у вас есть управляемые объекты под названием studObj1 и studObj2 (Student Entity), то вы устанавливаете отношения, как это объект раздела (sectionObj):

(при условии, что вы будете создавать управляемый объект подкласса)

Student *studObj1= <create object> 
Student *studObj2= <create object> 

Section *sectionObj = <create object> 

//set one-to-one relationship 
studObj1.oneSection = sectionObj; 
studObj2.oneSection = sectionObj; 

//set one-to-many relationship; 

NSSet *studSet = [NSSet setWithObjects:studObj1,studObj2,nil]; 
sectionObj.manyStudents = studSet; 

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

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"oneSection.name like 'MainSection'"]; 
Смежные вопросы