我有一个对象包含一个名为 pointValue
的 NSMutableArray
和包括 setPointValue
在内的几个方法。当调用后一个方法时,它会触发另一个方法 saveTable
将 pointValue
保存到一个文件中(它是一个 csv,但在这里并不重要,因为保存方法有效)。
我现在有一个包含 NSTableView
和 NSArrayController
的 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/