【发布时间】:2013-12-21 12:33:54
【问题描述】:
所有那些“NSOrderedSet 是后来添加的,因此不必与其他组件配合得很好”的错误让我抓狂……
我有两个托管对象和它们之间的有序 1:N 关系,它由 NSOrderedSet 的实例(或更准确地说是子类)支持。我想使用NSArrayController 管理这种关系,以便从它提供的功能(选择管理、内容绑定、与NSTableView 等视图的绑定)中获利。
由于NSOrderedSet 不是NSSet 的子类,NSArrayController 的contentSet 绑定不适用于该关系。我找到了following thread 并尝试实施那里提到的建议。
第一个建议是使用contentArray 绑定和值转换器将有序集动态转换为数组。此解决方案的问题是每次进行更改时都会重新分配内容,这不是我想要的。
上述线程中提供的第二个建议是使用contentArray 绑定并将@array 运算符应用于模型键路径。我已经尝试过了,但是通过NSArrayController 添加/删除对象时,底层关系根本没有触及。
我发现的另一个选项是使用带有contentSet 绑定的排序描述符。这将需要使关系无序以使contentSet 绑定工作并引入一个专门用于管理订单的新属性。这还需要自定义排序机制来实现,并且会破坏模型。老实说,我想避免这种解决方案。
我的问题很明确:有没有办法使用NSArrayController 来管理有序的核心数据关系?如果是这样,哪种方法能尽可能减少疼痛?
【问题讨论】:
标签: cocoa core-data cocoa-bindings nsarraycontroller nsorderedset