gpt4 book ai didi

objective-c - 如何观察 NSArrayController 包含的项目的变化

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:01 25 4
gpt4 key购买 nike

我有一个对象包含一个名为 pointValueNSMutableArray 和包括 setPointValue 在内的几个方法。当调用后一个方法时,它会触发另一个方法 saveTablepointValue 保存到一个文件中(它是一个 csv,但在这里并不重要,因为保存方法有效)。我现在有一个包含 NSTableViewNSArrayController 的 nib 文件,它连接到对象中的数组。按下 Nib 中的按钮会触发 NSArrayController remove: 方法,删除所选项目,访问保存新数组的 setPointValue .

这一切都完美无缺,当我手动编辑表格中的单元格并按回车键时,我的问题就开始了,数组发生了变化,但 setPointValue 没有被触发,因此数组没有保存到文件中。

我对为什么没有调用 setPointValue 感到非常震惊。我是否必须将数组控件或表格列绑定(bind)到某些东西?

最佳答案

您的 NSArrayController 仅观察其内容数组。您想要观察 该数组中对象的值,这不是一回事。

我强烈建议您阅读关于 Key-Value Observing 的所有文档和 Cocoa Bindings .

您会发现,当项目被添加到您的 setPointValue 数组中时,您需要观察它们,并在它们被移除时停止观察它们。您可以通过创建 indexed collection accessor methods 来做到这一点为您的 setPointValue 设置或拆除观察其中添加和删除的项目。您还需要对 receiving notification of the changes 使用react到您观察到的项目以触发您的保存方法。

Sosborn 是正确的 - 这实际上是一个 duplicate of this question .查看 OP 为最直接的解决方案提供的已接受答案(比我对这个问题的原始答案更好)。

关于objective-c - 如何观察 NSArrayController 包含的项目的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011315/

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