我有三个实体
Forms{
name:string
jobs<-->>JSAjobs.form
}
JSAjobs{
name:string
form<<-->Forms.jobs
}
Jobs{
step:string
jobs<<-->Forms.jobs
}
我收到此错误:
对于objectID 0x95afe60的to-many relationship fault“jobs”。 。 。从数据库中完成。有0行
现在我稍后首先保存Forms实体的行,我需要在Form实体上获取最后一条记录,在JSAjobs
上创建一个新行,详细信息如下{/ 1}}
由于
JSAjop
答案 0 :(得分:0)
您的实体非常混乱,因为您没有选择可用的实体名称。你太困惑了,不能自己布置这些简单的关系。这导致代码混乱,并且不允许您以结构化的方式思考问题。
您的代码完全不可理解。尽管有一个取出的结果控制器(大概),你有一个数据阵列。代码的第二部分是一个神秘而神秘的新实体JOBsob
。你无法提出这样一个有意义的问题,更不用说得到答案了。
你有嵌套数组,没有任何类型检查,这些数据必然会破坏,并且无论如何都无法调试。摆脱所有这些。
尽管如此,让我们试着让你开始吧:
首先,将复数用于实体名称是没有意义的。如果实体代表“表单”,则应为Form
而不是Forms
。
也许你想要这个设置:
Form <<----> Job <----->> JobDetail
一份工作有很多表格和许多工作细节。因此,表单具有job
的关系,而作业具有forms
的关系。同样,Jobdetail的关系为job
,而Job有关系details
。
当您拥有表单并创建新作业时,您只能为其分配一个作业。因此,旧的工作(如果有的话)将被打破。
oldForm.job = newJob;
这是一种更安全的分配关系的方式。当然,为此目的,您已为这些实体创建了NSManagedObject子类。
但是,如果Job和Form之间的关系在另一个方向上是一对多的,那么您的方案将如下所示。
Form <---->> Job <------>> JobDetail
我现在真的不知道“形式”在这种情况下意味着什么 - 为了清楚起见,我将重命名为Project
。
Project <---->> Job <------>> JobDetail
现在,您可以将新作业分配给项目,并链接其他关系,如下所示:
newJob.project = existingProject;
newJobDetail.job = newJob;