gpt4 book ai didi

objective-c - 将distinctUnionOfObjects与NSArrayController和NSTableView一起使用

转载 作者:行者123 更新时间:2023-12-03 17:06:33 25 4
gpt4 key购买 nike

我在过滤 NSArrayController 的内容并将其绑定(bind)到 NSTableView 的列时遇到问题。

事实上,我有一个表格,可以用它为我们的客户生成账单。为此,我有一个名为 Customer 的数组,我可以在那里收集每个客户的信息。

现在,我想向所有客户展示使用 NSTableView,当然我需要它不重复。我知道我可以使用 @distinctUnionOfObjects 来创建唯一的客户数组,但它在 Interface Builder 的 Binding Inspector 菜单中不起作用。当我使用 Controller key :arrangedObjects 和模型 key 路径:@distinctUnionOfObjects.customerName 时,我收到一条错误消息,告诉我该实体不符合 KVC !!!

2011-06-28 00:22:03.212 FinancingPro[459:903] [<NSManagedObject 0x10053e1a0> valueForUndefinedKey:]: the entity Customer is not key value coding-compliant for the key "@distinctUnionOfObjects".

也许distinctUnionOfObjects不是正确的方法!

如何才能拥有具有唯一参数的 NSTableView

最佳答案

When I use the Controller Key: arrangedObjects and Model Key Path: @distinctUnionOfObjects.customerName, I receive an Error telling me the Entity is not KVC compliant !!!

2011-06-28 00:22:03.212 FinancingPro[459:903] [<NSManagedObject 0x10053e1a0> valueForUndefinedKey:]: the entity Customer is not key value coding-compliant for the key "@distinctUnionOfObjects".

您已绑定(bind)到模型对象,而不是数组 Controller 。 arrangedObjects 是数组 Controller 的属性,而 @distinctUnionOfObjects 是仅数组和集合支持的特殊键,因此您需要绑定(bind)到数组 Controller 。

请注意,您的 @distinctUnionOfObjects 过滤器仅适用于该列,不适用于其他列。因此,您只是过滤客户的姓名,而不是客户本身。这很可能是错误的;您仍然可以在模型中拥有多个具有相同名称的客户,并且当您这样做时, TableView 将翻转(因为您给了它多列不同长度的列)或显示实际上是垃圾的内容(错误的名称,因为它们相对于其他列向上移动)。

此外,假设您有一个仅包含名称列(例如源列表)的 TableView ,并且您对其应用了此过滤。然后,当您有重复的客户时,应用程序将只显示其中一位,而且是随机的。如果用户删除该客户,另一个(或其他客户之一)将会出现;这将显示为删除失败(“我删除了约翰·史密斯,但约翰·史密斯仍然出现在列表中!”)。

如果您打算禁止多个客户同名,请在使用 Key-Value Validation 输入或更改客户时执行此操作,并在 TableView 中删除此输出限制。如果不知何故,您的用户在其数据库中获得多个具有相同名称的用户,您不希望您的应用程序变得疯狂。

您需要防止输入重复,而不是输出重复。

关于objective-c - 将distinctUnionOfObjects与NSArrayController和NSTableView一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6485216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com