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

Cocoa:核心数据关系不起作用,cocoa,core-data,entity-relationship,Cocoa,Core Data,Entity Relationship,我有一个基本的核心数据模型,如下所示: 阶级 -类名(字符串) 关系:HasDetails(对多个)-对详细信息 细节 -数字(整数) -名称(字符串) 关系:iPartOfClass-到类 我有两个表视图,一个用于“类”,另一个用于“详细信息”,并设置了所有绑定,但是,当我添加一个新对象以详细信息时,它会显示所有类,当我希望它只显示一个时,所选的一个此处缺少大量信息,您对实体的描述令人困惑。我强烈敦促你今后花时间提供更多的细节 听起来好像你有一个Class>Details(一对多关系:一个类有

我有一个基本的核心数据模型,如下所示:

阶级

-类名(字符串)

关系:HasDetails(对多个)-对详细信息

细节

-数字(整数)

-名称(字符串)

关系:iPartOfClass-到类


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

此处缺少大量信息,您对实体的描述令人困惑。我强烈敦促你今后花时间提供更多的细节

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

假设类的详细关系称为“详细信息”,详细信息的类关系称为“类”,并且托管对象模型中的所有内容都已正确设置(反向关系几乎总是正确的做法),则您需要以下内容:

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


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

    Matt,让我猜一下您想做什么:

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

    在数据模型视图的右上窗格中,您可以将类设置为“类”或其他类型,在右侧的下一个窗格中,您可以按“+”按钮为标题为“名称”和“数字”的属性添加属性。在该视图的最右列中,选择“字符串”作为名称,选择“整数”作为数字

    在interface builder中,您将向模型视图添加一个数组控制器,然后选择您的数组控制器,进入绑定检查器,打开底部“ManagedObjectContext”选项卡,并选择“File’s Owner’s”ManagedObjectContext(请记住在视图控制器中声明此项,并在dealloc方法定义中取消分配它)

    我怀疑您只需要一个表视图,但需要多个列。请单击表视图两次,然后在“属性检查器”中将列设置为3。然后分别选择每一列,然后再次在“绑定检查器”中将每一列的值设置为要显示的阵列控制器的属性


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

    这是因为您查看的是数据模型,而我们没有。当问题是关于关系时,没有关于关系的真实信息的简单文本描述就没有太多内容了。对不起,我之前的评论听起来比我预期的要简洁。我认为评论是正确的,TechZen。我的评论也不正确你的不是攻击,而是一个诚实的声明。马特,当你向别人寻求帮助时,最好不要在他们说他们需要澄清时争辩。他们这样做是为了帮助你,并且争辩说这一点并不能为你赢得良好的声誉,特别是在这样一个网站上。我已经尽可能清楚地说明了这一点,但没有上传全部数据奥德尔