Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 为NSArrayController的每个元素获取唯一标识符';内容_Cocoa_Cocoa Bindings_Nstableview_Nsarraycontroller_Cocoa Design Patterns - Fatal编程技术网

Cocoa 为NSArrayController的每个元素获取唯一标识符';内容

Cocoa 为NSArrayController的每个元素获取唯一标识符';内容,cocoa,cocoa-bindings,nstableview,nsarraycontroller,cocoa-design-patterns,Cocoa,Cocoa Bindings,Nstableview,Nsarraycontroller,Cocoa Design Patterns,我正在创建一个自定义视图,希望它与绑定/核心数据兼容,并表示一个数据集合(一个表视图) 在用户进行更改后,我的视图是否可以引用集合中元素的特定子集(当前选择除外) 一点背景: 该视图将在二维空间中显示许多用户可移动的框。每个框对应于模型中的一条记录。几个可以同时移动,我不能依赖每个框的增量值是相同的(因此不能向每个选定对象添加增量) 我想我正在寻找类似于NSArrayController为内容数组的每个元素分配的id,以便视图可以将该id与每个框关联。我的第一个想法是在内容数组中使用索引,但撤销

我正在创建一个自定义视图,希望它与绑定/核心数据兼容,并表示一个数据集合(一个表视图)

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

一点背景:
该视图将在二维空间中显示许多用户可移动的框。每个框对应于模型中的一条记录。几个可以同时移动,我不能依赖每个框的增量值是相同的(因此不能向每个选定对象添加增量)


我想我正在寻找类似于NSArrayController为内容数组的每个元素分配的id,以便视图可以将该id与每个框关联。我的第一个想法是在内容数组中使用索引,但撤销/重做可能会弄糟这一点。我可以将NSArrayController子类化,让它为每个模型项自动生成一个id,但是cocoa已经做过类似的事情了吗?感觉好像我遗漏了什么。

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


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

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


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

我应该提到,我最初尝试将内容数组的每个元素存储在视图中(正如Peter所建议的),但将它们作为键存储在字典中

视图中的对象与字典中的键不匹配,因此我假设这意味着NSArrayController更改了它用于表示模型对象的代理对象

然而,事实证明,NSDictionary复制了它的键,因此在您希望将一个对象的特定实例与另一个对象关联的情况下,这似乎是不好的


NSMapTable是它更灵活的近亲,可以配置为不复制其键。

我应该提到,我最初尝试将内容数组的每个元素存储在视图中(正如Peter所建议的),但将它们作为键存储在字典中

视图中的对象与字典中的键不匹配,因此我假设这意味着NSArrayController更改了它用于表示模型对象的代理对象

然而,事实证明,NSDictionary复制了它的键,因此在您希望将一个对象的特定实例与另一个对象关联的情况下,这似乎是不好的


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

谢谢。是的,作为对我问题的一般回答,你是对的。我找出了我的问题所在,并在下面发布了详细信息。谢谢。是的,作为对我问题的一般回答,你是对的。我找出了我的问题所在,并在下面发布了详细信息。