11

如何将 NSArrayController 的内容绑定到有序对多关系中的实体?

我的核心数据模型中有一个无序的多对多关系,以及一个 NSArrayController,其内容集绑定到父实体的该关系。这工作正常,数据可以从 NSArrayController 访问,没问题。

我在开发过程中决定让用户手动重新排序这些子对象会更好,所以我将关系更改为有序的。现在,当从我的 nib 创建我的 NSArrayController 时,会出现以下错误:

Cannot create NSSet from object Relationship '...' fault on managed object ... of class _NSFaultingMutableOrderedSet

现在实际上,我认为这一切都是有道理的:这是一个有序的关系,所以现在我得到了一个有序的集合。将它绑定到 Content Array 也是不合适的,因为它现在是一个 NSOrderedSet,而不是一个数组。我的问题是:现在如何将这种关系的数据绑定回 NSArrayController?

4

2 回答 2

11

我在寻找这方面是否有任何新的发展时遇到了这个讨论。在一个运输应用程序中,我目前将数组控制器的内容数组绑定到orderedSetKey.@array它,它工作得很好,不确定我是自己发现的还是其他人在某处建议的。

于 2013-10-21T01:25:54.203 回答
9

根本问题是 Core Data 的有序对多关系返回一个 NSOrderedSet,而 NSOrderedSet 不是 NSSet 的子类。任何期望 NSSet 的阵列控制器绑定都将失败。

Tom Fewster 有一篇详细的博客文章描述了使用 NSValueTransformer 来解决这个缺点,在 NSOrderedSet 和 NSArray 之间进行动态转换。他还在Github 上提供了一个示例实现

于 2013-03-24T23:55:52.087 回答