获取NSArrayController内容的每个元素的唯一标识符

时间:2010-08-20 00:49:28

标签: cocoa cocoa-bindings nstableview nsarraycontroller cocoa-design-patterns

我正在制作一个自定义视图,我想要绑定/核心数据兼容并代表数据集合(一个NSTableView)

在用户更改后,我的视图是否有任何方式可以引用集合中的元素的特定子集(当前选择除外)?

一点背景:
该视图将在2D空间中显示许多用户可移动的框。每个框对应于模型中的记录。有几个可以一次移动,我不能依赖每个框的delta值相同(所以不要为每个选定的对象添加一个delta)。

我想我正在寻找类似于NSArrayController分配给内容数组的每个元素的id的东西,以便视图可以将该id与每个框相关联。我的第一个想法是在内容数组中使用索引,但这可能会被undo / redo弄乱。我可以继承NSArrayController并让它为每个模型项自动生成一个id,但是cocoa已经做过这样的事了吗?感觉我可能会遗漏一些东西。

2 个答案:

答案 0 :(得分:1)

我应该提到我最初尝试将每个内容数组的元素保存在视图中(如彼得所建议的那样),但是将它们存储为字典中的键。

视图中的对象与字典中的键不匹配,所以我认为这意味着NSArrayController更改了它用来代表模型对象的代理对象。

然而,事实证明NSDictionary复制了它的密钥,所以对于你想要将对象的特定实例与另一个对象关联的情况似乎没有用。

NSMapTable是它更灵活的表兄弟,可以配置为不复制其密钥。

答案 1 :(得分:0)

为什么不直接引用对象呢?您可以将它们保存在一个集合或数组中,以适当的方式。

如果你真的需要某种标识符:用于什么?你打算用它做什么?