На самом деле, они в значительной степени одинаковы, потому что оба являются системами графов объектов.Словарный запас отличается.Rails по-прежнему поддерживает большую часть номенклатуры реляционных баз данных, тогда как Core Data использует чисто объектно-ориентированную номенклатуру.
Вместо «таблиц» базовые данные имеют «сущности», которые представляют атрибуты и отношения объектов времени выполнения.Связи имен базовых данных на каждом конце отношений, используя to-one (->), to-many (- >>).
Итак, в вашем примере вы должны иметь (псевдокод):
Contributor{
name:string;
address:string;
contributions<-->>Contribution.contributor;
}
Contribution{
typeOfContribution:string;
...
contributor<<-->Contributor.contributions;
}
Project{
name:string;
...
contributions<-->Contribution.project;
}
Чтобы найти проект, начинающийся с Contributor
, вы должны обходить отношения с использованием ключевого пути в предикате.Что-то вроде:
NSPredicate *aPred=[NSPredicate predicateWithFormat:@"project.name=%@",nameVariable];
NSSet *foundProjects=[aContributorObj.contributions filteredSetUsingPredicate:aPred];
Это займет все объекты Contribution
, относящиеся к конкретному объекту Contributor
, и затем пройдет путь к ключу отношения проекта Contribution
объекта, а затем к атрибуту имени объектов проекта,Если атрибут name
соответствует значению в nameVariable
, объект проекта возвращается в набор, содержащийся как foundProjects
.
Я не большой парень по Rails, но из того, что я сделал, похоже,Базовые данные и Rails довольно близки по функциональности, это просто номенклатура, которая отличается.Базовые данные всегда имели графический редактор данных и предикаты, поэтому он использует меньше текстовых ярлыков, чем Rails.