Objective c 利用关系理解CoreData
我对使用核心数据和关系产生了误解 我从sql时代(很久以前…)记得的是,我必须向每个表添加和ID,这些表将成为表之间建立关系的条目 下面是我的表在myObjective c 利用关系理解CoreData,objective-c,sqlite,core-data,entity-relationship,Objective C,Sqlite,Core Data,Entity Relationship,我对使用核心数据和关系产生了误解 我从sql时代(很久以前…)记得的是,我必须向每个表添加和ID,这些表将成为表之间建立关系的条目 下面是我的表在myCoreData(实体)中的外观概述 Epro\u表是我的主表,其他表必须与该表相关 我想做的是: 用户在UIViewController(EPro公司视图控制器)上填写字段,该控制器有自己的实体EPro公司 然后,当他按下下一步(即创建EPro_工作表)时,增加idSheet并填充其他条目,而且EPro_公司将填充EPro_公司视图控制器的字段
CoreData
(实体)中的外观概述
Epro\u表
是我的主表,其他表必须与该表相关
我想做的是:
- 用户在UIViewController(
)上填写字段,该控制器有自己的实体EPro公司视图控制器
EPro公司
- 然后,当他按下下一步(即创建
)时,增加idSheet并填充其他条目,而且EPro_工作表
将填充EPro_公司视图控制器的字段文本EPro_公司
- 然后用户将填写
的字段,然后当他按下next时,填写实体EPro\u DaFroid,获取当前EPro\u表的当前Id并将其设置为EPro\u DaFroid李>EPro\u DaFroidViewController
- 等等
- 将有一个UIViewController(历史记录),允许用户检索特定日期的所有信息以编辑或显示它
首先,您必须了解核心数据不是关系数据库,主键等概念并不存在。它留给你去实现。有关这方面的更多详细信息,请参见: 这里呢 如果要在核心数据中实现关系,则必须在核心数据模型中创建关系。假设你有这样的关系: 学生>部分 i、 一个学生属于一个部门,一个部门可以有许多学生。然后,在核心数据模型中,您可以定义学生与部分之间的一对一关系(例如
oneSection
),以及部分与学生之间的一对多关系(例如manyStudents
)。然后你将这个关系设置为彼此的反向关系
尽管我们将其声明为关系,但它实际上是托管对象的一个属性
因此,如果您有一个名为studObj1
和studObj2
(Student
实体)的托管对象,那么您可以将这种关系设置为一个section对象(sectionObj
):
(假设您将创建一个托管对象子类)
你的具体问题是什么?是的。正如MVP所说,简短明了地解释你的问题,只有你才能得到快速的回答。
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'"];