gpt4 book ai didi

cocoa - 将 NSArrayController 绑定(bind)回 ivar 时出现问题

转载 作者:行者123 更新时间:2023-12-03 17:44:29 28 4
gpt4 key购买 nike

我对自定义 View 的绑定(bind)属性有疑问。该属性绑定(bind)到核心数据实体的 NSArrayController。

问题是这样的:

在我看来,我画了几个矩形。这些矩形的位置保存在核心数据的实体中(作为 NSValue 包装的 NSRect)。矩形是可拖动的,当我拖动矩形时,我希望实体更新到新位置。但我不知道如何将 arrayController 绑定(bind)回 View 。

以下是所有内容的连接方式:

  • 我有一个 windowController,带有 View 和 arrayController 的导出。

  • arrayController 绑定(bind)到 windowController 的 ManagedObjectContext,因此也绑定(bind)到我的核心数据模型。 (该绑定(bind)以及与实体的绑定(bind)是在 Interface Builder 中建立的)

  • View 通过 ivar“rectangleValuesArray” 绑定(bind)到 arrayController

最后一个绑定(bind)是在 windowController 中使用以下方法建立的:

[connectionsView bind:@"rectangleValuesArray"
toObject:elementsArrayController
withKeyPath:@"arrangedObjects.rectangleValue"
options:nil];

到目前为止,这有效。

现在我尝试在另一个方向上建立绑定(bind):

[elementsArrayController bind:@"arrangedObjects.rectangleValue"
toObject:connectionsView
withKeyPath:@"rectangleValuesArray"
options:nil];

现在,当我更改 ivar 时,实体应该更新(对吗?)。但这不起作用 - 我从控制台得到:

Cocoa Bindings: Error setting value for bound property arrangedObjects.rectangleValue of object <NSArrayController: 0x200027100>[entity: Element, number of selected objects: 1]: [<NSArrayController 0x200027100> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key arrangedObjects.rectangleValue.

我在这里犯了什么错误?请问有人帮忙吗?

西蒙

最佳答案

有几件事。

首先,异常是正确的:不可能设置任何 NSValue 对象的矩形值。它们是不可变的。

听起来您正在尝试维护并行数组,矩形数组就是其中之一。不要那样做;绑定(bind)会阻碍它,也使得 AppleScript 支持变得更加困难。

您需要做的是实现模型对象,并保留这些对象的单个数组。无论您当前拥有什么数组,包括矩形数组,都应该成为模型对象的属性——每个数组都有一个矩形,等等。

另一件事是你没有将 Controller 绑定(bind)到 View ;您将 View 绑定(bind)到 Controller 。完成此操作后,您就完成了。

如果可能的话,您也可以考虑在 IB 中而不是在代码中进行设置。不要抗拒使用IB;这是你的 friend 。

关于cocoa - 将 NSArrayController 绑定(bind)回 ivar 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541078/

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