1

我有一个核心数据应用程序,其实体 OBSERVATION 具有 DEALNAME 属性之一。我想通过 Interface Builder 或通过对 NSArrayController 进行自定义修改来引用唯一排序的交易名称列表,以便我可以在弹出窗口中使用它们。

我尝试使用@distinctUnionOfSets(和@distinctUnionOfArrays),但无法找到正确的键序列。

我可以通过提供排序描述符对 ArrayController 进行排序,但不知道如何消除重复项。

@distinct... 键是正确的方法吗?它似乎提供了优化 IB 使用的最简单方法。

是否有用于删除重复项的谓词形式?

或者我是否需要使用我的自定义控制器来提取特定交易名称的 NSSet,将它们放回数组中并对其进行排序并从 IB 引用自定义数组?

任何帮助,将不胜感激。我很惊讶其他人没有尝试在表格视图中创建一个排序独特的弹出窗口。

4

2 回答 2

0

你需要看看-[NSFetchRequest returnsDistinctResults]。这是您处理数据唯一性所需的级别。

于 2010-05-09T01:50:45.960 回答
0

虽然我没有给你一个明确的答案,但我认为有两种方法可以解决。

  1. 你已经开始的方式。您需要绑定 PopUp 按钮的内容数组,而不仅仅是针对 arrayController.arrangedObjects,而是继续在路径上并以某种方式仅过滤具有不同“DealName”的对象。这意味着 - arrayController 呈现所有实体(并可能为您排序),但 PopUp 按钮将通过与数组控制器的一些复杂绑定来过滤其内容。

  2. 在 ArrayController 级别进行过滤(如此处另一个答案中所建议的那样)。这取决于您如何设置阵列控制器。如果它设置为使用“实体”(与“类”),这意味着数组控制器将直接获取 CoreData 实体 - 您可以修改其“获取”以仅带来具有不同值的“观察”实体的子集的“交易名称”。在这种情况下,我不知道如何控制哪些实体被过滤掉。否则,您可以设置 arrayController 以使用“类”对象,然后您可以自己(在代码中)获取实体并以编程方式填充 arrayController,只使用您喜欢的实体。

在第二个选项中,弹出按钮应该正常绑定到 arrayController 的排列对象。

于 2016-02-13T19:17:27.857 回答