因此,我正在创建此应用程序,其中涉及在表视图中创建例程。一旦在表视图中创建了该例程,便可以选择在该例程内部进行查看。在内部查看后,将为您提供另一个表视图,该表视图分别包含一组任务,所有任务均由用户创建。我正在使用Core Data,并且在数据模型中将任务分配给它所在的例程时遇到问题。模拟器中发生的事情是,我创建的所有任务都可以在所有例程中看到。这根本不是我想要的行为,我要寻找的是让每个例程都有自己的单独任务。你会怎么做?请记住,我正在使用核心数据。
首先,您需要定义两个实体之间的关系。在模型编辑器中,将ctrl从Routine
实体拖动到Task
实体。这将在两个实体之间创建新的关系(由该行表示):
newRelationship
在Routine
实体中选择,并将其重命名为“ tasks”(在右侧面板中),然后将“ Type”更改为“ To Many”-每个Routine
可以有很多Tasks
。同样newRelationship
,将Task
实体中的重命名为“常规”(您还应该确定每个实体Task
可以属于多个Routines
,还是仅属于一个,并相应地更改“类型”;我假设它将是“一对一”):
“类型”由箭头指示-单精度表示“一对一”,双精度表示“一对多”。(您还应该浏览CoreData文档,并确定所需的“删除规则”。)
那就是定义的关系。为了简化填充关系,值得NSManagedObject
为每个实体生成子类。然后,您可以使用点表示法访问它们的属性(和关系)。模型编辑器可以为您生成子类定义-在编辑器菜单中,“创建NSManagedObject子类”:
遵循各种对话框,将为每个实体创建一个.swift文件。现在,填充关系很容易-如果您有一个Routine
对象(例如myRoutine
)和一个Task
名为的对象myTask
,则只需使用
myTask.routine = myRoutine
这将自动设置双向关系,从-myRoutine
到myTask
反之亦然。
现在,在类型的第二个视图控制器中定义一个属性(“ myRoutine”)Routine
。当您从您的第一个视图控制器Segue公司,设定的值myRoutine
来选择的Routine
。然后,在创建任何新Task
对象之后,将它们设置routine
为myRoutine,如上所述。或者,如果仅显示所选例程的任务,则可以在第二个视图控制器中使用myRoutine.tasks
(这是Task
所选对象的所有对象的NSSet Routine
)作为表视图的数据源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句