gpt4 book ai didi

objective-c - 指定要获取哪个对象的 super

转载 作者:行者123 更新时间:2023-12-03 16:53:04 25 4
gpt4 key购买 nike

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

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

这样做的目的是以编程方式执行从 NSArrayController 到 NSButton 的“add”简单绑定(bind)在 IB 中执行的操作。我的应用程序中有多个 arrayController,因此我希望能够通过代码指定要获取哪个 arrayController。

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

最佳答案

你问了一个错误的问题。

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

C可以是另一个类A子类。那么A 就是C父类(super class)。假设您有一个 C 类的实例 c。然后,在C类的方法的实现中,self代表c本身的实例,super代表code> 代表 c 的实例作为其父类(super class) A 的实例。从某种意义上说,C 类的实例也是A 类的实例。

对象可以具有除父类(super class)或子类之外的其他关系。例如,类 C 可以在其接口(interface)中包含实例变量 B* b; 在这种情况下,类 c 的实例 C 指向类B 的实例b 的指针。在这种情况下,c不是B的实例。

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

所以你想要做的不是获取你的NSArrayControllersuper。相反,您想要获取与 NSArrayController 关联的 moc。现在,你如何得到它?要找到它,您可以在 XCode 中或在 Apple Developer Connection 的 Web 上打开引用,see here 。现在就这样做。通过这些方法。你找不到一个给你 moc 的人。

然后,您转到该页面的顶部,并遵循 NSArrayController 的父类(super class)。请参阅this reference of NSObjectController 。现在,浏览一下方法列表。您会找到 -[NSObjectController ManagedObjectContext],它可以完成这项工作!

结论:如果你想要将 moc 关联到 NSArrayController,你只需要这样做

NSManagedObjectContext* moc= [arrayController managedObjectContext];

其中 arrayController 是您要处理的 NSArrayController 的实例。例如如果 Nib 中有多个 NSArrayController 实例,则应用程序委托(delegate)中应该有多个 IBOutlet,例如 arrayController1arrayController2 等(这些都是非常糟糕的变量名)。然后你选择你想要处理的人。

关于objective-c - 指定要获取哪个对象的 super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com