是否可以将“NSTextfield”仅绑定到 NSArray 或 NSSet/Relationship 中的一个特定条目

Posted

技术标签:

【中文标题】是否可以将“NSTextfield”仅绑定到 NSArray 或 NSSet/Relationship 中的一个特定条目【英文标题】:Is it possible to bind a `NSTextfield` to only one particular entry in a NSArray or NSSet/ Relationship 【发布时间】:2013-06-15 20:56:52 【问题描述】:

是否可以将NSTextfield 仅绑定到 NSArray 或 NSSet/Relationship 中的一个特定条目。

我可以看到使用filterPredicateControl Key 绑定到NSArrayController 的可能性,但是Model Key Path 是什么?

此外,单个 NSArrayController 是否可以有许多 filterPredicates 方法或属性。

【问题讨论】:

【参考方案1】:

据我所知,您不能绑定到集合中的特定对象,因为无法一致地表达集合中的给定对象。从集合中提取对象的唯一方法是anyObject。对于数组是另一回事。它们可以被索引,并且绑定 API 允许您这样做:

// Edit: changed the code to use bindings directly instead of KVO

[_textFild bind:NSValueBinding 
       toObject:array[indexToBindTo]
    withKeyPath:@"firstName"
        options:nil];

您不能直接在 Interface Builder 中执行此操作,因此必须在代码中完成。

【讨论】:

我认为可以使用谓词绑定到集合中的特定对象,例如“name like xxxx”。但是如何对关键路径进行建模。或者我很遥远。可能是在 fetchPredicate 中设置了谓词的附加控制器。 如果您自己获取对象,那么您可以通过编程方式添加绑定,但 KVC 不支持键路径中的谓词(键路径与谓词不同)。 所以也许这个问题措辞不当。 ControlKey 中有一个“filterPredicate”选项。该选择是否甚至需要 ModelKeyPath。可以一个人简单地单独称呼它。似乎 Cocoa 绑定使用属性名称,比如“firstName”。当然,可以为“firstName”提供一个基本上使用谓词获取的方法体。无论如何,干杯 您可能会看到“filterPredicate”,因为您正在绑定到具有 fiterPredicate 属性的数组控制器。您可以使用此属性来过滤数组控制器的内容,但这会影响绑定到该控制器的所有内容。我已经修改了上面的代码示例,为您提供了另一种实现我认为您正在寻找的方法。 啊哈。是的。 “filterPredicate”用于搜索框中,确实会影响绑定到控制器的所有内容。在这种特殊情况下,这是不希望的。我假设 indexToBindTo 可能是一个固定值,如“0”。但也许可以从另一个控制器获取 selectionIndex。凉爽的。感谢您的帮助。

以上是关于是否可以将“NSTextfield”仅绑定到 NSArray 或 NSSet/Relationship 中的一个特定条目的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa NSTextField - 绑定和设置属性

NSTextField 不使用核心数据绑定更新计算属性

在 Interface Builder 中使用 Suite 将值绑定到 NSUserDefaults

NSManagedObjectContext 保存导致 NSTextField 失去焦点

ASP.NET,将数据绑定到 asp.net 控件并仅显示一次重复值

将标签绑定到类的属性