1

就像标题说的那样,我想指定一个的超级NSArrayController,类似于 的东西self = [super[NSArrayController] function],但是没有运气搜索这个。有任何想法吗?提前致谢。

编辑以删除抽象示例,因为它们使人们对我的问题的性质感到困惑。

这样做的目的是以编程方式完成从 NSArrayController 到 NSButton 的“添加”的简单绑定将在 IB 中执行的操作。我的应用程序中有几个 arrayControllers,所以我希望能够通过代码指定我想获得哪一个。

我正在寻找 NSArrayController 的 super 的原因是因为我的印象是应该解决模型而不是控制器 (NSArrayController) 并且我的模型是一个核心数据模型,我相信我可以通过使用 super我按名称指定的 NSArrayController 。也许有一种更直接的方法可以添加到数据模型中。

4

1 回答 1

5

你问错了问题。

首先,让我们区分一个和一个类的实例。请注意,同一类可能有多个实例,而且确实经常有多个实例。

一个类C可以是另一个类的A类。然后A是 的C。假设您有一个c类的实例C。那么,在类的方法实现中Cself代表c自身super的实例,代表作为其超类c 的实例的实例A。从某种意义上说,类的实例C 也是类的实例A

对象可以有其他关系,而不是超类或子类。例如,一个类C可以在其接口中有一个实例变量B* b;。在这种情况下,该类的一个实例c有一个指向该类C 实例b指针B。在这种情况下,c不是类实例B

与被管对象上下文的关系NSArrayController是后者之一。的实例NSArrayController包含指向NSManagedObjectContext(moc) 实例的指针。

所以你想做的不是得到super你的NSArrayController. 相反,您希望将 moc 关联到NSArrayController. 现在,你怎么得到它?要找到它,您可以在 XCode 中或在 Apple Developer Connection 的 Web 上打开参考,请参阅此处。现在就这样做。通过方法。你找不到给你moc的人。

然后,您转到该页面的顶部,并按照NSArrayController. 请参阅NSObjectController. 现在,浏览方法列表。你会发现-[NSObjectController managedObjectContext],它的工作!

总之:如果你想要 moc 关联到NSArrayController,你只需要做

NSManagedObjectContext* moc= [arrayController managedObjectContext];

您要处理arrayController的实例在哪里。NSArrayController例如,如果您NSArrayController在 nib 中有多个 s 实例,您应该IBOutlet在应用程序委托中有多个 s,例如arrayController1arrayController2等(这些是非常糟糕的变量名称)。然后你选择你要处理的那个。

于 2011-02-19T14:32:17.333 回答