如何将同一个xib文件绑定到不同的核心数据实体

Posted

技术标签:

【中文标题】如何将同一个xib文件绑定到不同的核心数据实体【英文标题】:How to bind the same xib file to different core data entities 【发布时间】:2012-03-30 07:44:32 【问题描述】:

我的核心数据中有 4 个实体具有相同的父实体。它们几乎具有相同的属性。

对于这 4 个实体中的 3 个,我需要使用相同的 xib fie(用于修改实体属性的面板)。剩下的一个正在使用另一个面板。如果用户选择了更多实体,则使用相同的 NSTextField 来修改所有这些选定实体中的相应属性。

如何将我的 xib 文件中的对象绑定到不同的实体,我应该将它们绑定到父实体吗? (虽然在父级中我没有所有属性)。

我在 xib 文件中有很多文本字段,以编程方式绑定它们将是很多工作。在界面生成器中绑定要容易得多。

谢谢

【问题讨论】:

【参考方案1】:

假设您在 IB 中使用某种控制器(NSArrayControllerNSObjectController)来管理您的实体,您可以在视图控制器中为该控制器创建一个出口。

然后在awakeFromNib 方法中你可以这样做:

switch (myChoosenEntity) 
  case 1:
    [[self myEntityController] setEntityName: @"MyFirstEntity"];
    break;
  case 2:
    [[self myEntityController] setEntityName: @"MySecondEntity"];
    break;
  default:
    break

然后将设置实体控制器以使用您选择的实体。这种方法仍然允许您在 IB 中进行绑定。唯一的缺点可能是 IB 无法向您显示要绑定的可能属性,因为实际实体仅在运行时确定。

【讨论】:

以上是关于如何将同一个xib文件绑定到不同的核心数据实体的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSTreeController 的孩子绑定到订购到多关系的核心数据?

使用 NSDocument 时如何将情节提要视图绑定到 Core Data 实体?

核心数据、绑定、NSArrayController 和表视图 - 如何生成核心数据上下文的视图

观察 NSTreeController 绑定的核心数据实体以进行插入/删除

将一对多核心数据关系的前 5 个值绑定到文本字段

如何将 NSOutlineView 与多个核心数据实体作为组一起使用