Cocoa:核心数据关系不起作用

时间:2010-02-13 20:43:37

标签: cocoa core-data entity-relationship

我有一个基本的核心数据模型:

- 类名称(字符串)

关系:HasDetails(对很多人) - 到细节

详细

-Number(int)

-Name(string)

关系:IsPartOfClass -to Class

我有两个表视图,一个用于“类”,一个用于“详细信息”并设置了所有绑定,但是,当我向Details添加一个新对象时,它会显示所有类,当我需要它时仅显示一个,选定的一个

2 个答案:

答案 0 :(得分:3)

此处缺少大量信息,您对实体的描述令人困惑。我强烈建议你花点时间在未来提供更多细节。

听起来好像你有一个Class< ---->>细节(一对多关系:一个类有很多细节,一个细节有一个类)。是吗?

假设Class'详细信息关系称为“详细信息”,Details'类关系称为“class”,并且所有内容都在您的托管对象模型中正确设置(反向关系几乎总是正确的事情),你我想要以下内容:

  1. “Class”数组控制器设置为Entity模式,实体名称设置为“Class”。 managedObjectContext也需要绑定。您的Classes表视图将绑定到此。
  2. “详细信息”数组控制器,也设置为实体模式,实体名称为“详细信息”。您将其“contentSet”绑定到Class数组控制器的“selection.details”。这将仅为您的Details数组控制器提供所选类的详细信息。 managedObjectContext也需要绑定。您的详细信息表视图将绑定到此。
  3. 通过执行此操作,调用Details数组控制器的-add:-insert:和-delete :(或者它是“-remove:”?)方法(例如从按钮)将自动正确处理关系(将添加新的“详细信息”实例到选定的“类”实例的详细信息集。

    确保将添加/插入/删除按钮的启用状态绑定到阵列控制器的“canAdd”和“canRemove”(或者是“canDelete”?)属性,以便在所需的选项中没有选择时将其禁用地方。

答案 1 :(得分:0)

马特,让我猜一下你想做什么:

您需要一个类的数据库,每个类都有一个名称和一个数字。这不需要单一的关系,并且很容易实现!

在数据模型视图的右上方窗格中,您可以创建类,“类”或其他任何内容,在右侧的下一个窗格中,您可以按“+”按钮为属性“添加属性”你会标题“名字”和“数字”。在此视图的最右侧列中,为名称选择“String”,为数字选择“Integer”。

在界面构建器中,您将向模型视图添加一个数组控制器,然后选择您的阵列控制器,进入绑定检查器,打开“ManagedObjectContext”的底部选项卡,然后选择“File's Owner's”managedObjectContext(请记住在View Controller中声明它,并在dealloc方法定义中释放它。)

我怀疑你只需要一个表视图,但有多列。单击表视图两次,然后在属性检查器中将列设置为3.然后单独选择每个列,再次在绑定检查器中,将每个列的值设置为您希望它显示的Array Controller的属性。

添加几个绑定到阵列控制器的“添加”和“删除”方法的按钮,您应该进行设置。