我是 Objective-C 的新手,到目前为止我很喜欢它。然而,我似乎在兜圈子。我试图在不编写代码的情况下做尽可能多的事情。是否可以有效地将一个 NSArrayController 的内容集绑定(bind)到其他两个 NSArrayController 的选择。
例如,我想要所选用户 (NSArrayController) 与所选卖家 (NSArrayController) 的所有交易 (NSArrayController)。然后,当我添加新交易时,它会链接到选定的用户和卖家。
最好的方法是什么,这样当我在绑定(bind)到用户 Controller 的 NSTableView 中单击新用户时,绑定(bind)到事务 Controller 的 NSTableView 中的事务会相应更改,但仍然保留与在中选择的卖家相关的事务NSTableView 绑定(bind)到 Seller Controller (反之亦然)?
我可能只需要改变我的观点,因为我习惯了生活在一个没有约束力的世界。
感谢任何帮助。
最佳答案
您可以定期在 IB 中配置“TransactionsForUserAndSeller”NSArrayController,其 contentSet 绑定(bind)到 userArrayController.selection.transactions,然后使用其绑定(bind)到 sellerArrayController.selection 的 filterPredicate 以及返回 NSPredicate 的值转换器来过滤结果。
该值转换器的实现可能如下所示:
+(Class)transformedValueClass { return [NSPredicate class]; }
+(BOOL)allowsReverseTransformation { return NO; }
-(id)transformedValue:(id)value {
if (value == nil) return nil;
return [NSPredicate predicateWithFormat:
[NSString stringWithFormat:@"seller == %@", value]];
}
这将正确显示子集,但您需要编写自己的添加方法来手动处理关系,通过卖家数组 Controller 的导出获取当前选择。
关于objective-c - 如何将 NSArrayController 的内容集绑定(bind)到多个 NSArrayController 选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498626/