是否可以将“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 中的一个特定条目。
我可以看到使用filterPredicate
的Control 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 中的一个特定条目的主要内容,如果未能解决你的问题,请参考以下文章
在 Interface Builder 中使用 Suite 将值绑定到 NSUserDefaults
NSManagedObjectContext 保存导致 NSTextField 失去焦点