gpt4 book ai didi

objective-c - 填充 NSTableView 并将其绑定(bind)到多个数组 Controller

转载 作者:行者123 更新时间:2023-12-03 16:55:01 25 4
gpt4 key购买 nike

我有一个 API 提供 NSArray 和一堆内容对象 - 我们将其称为 acquiredFruit - 以及一个名为 likedFruit 的空 NSMutableArray。

我已经为两个数组创建了 NSArrayController,并将我的 TableView 绑定(bind)到 acquiredFruit.arrangedObjects。 tableView的第一列绑定(bind)到arrangedObjects.name并正确显示所有美味的水果。

我创建了带有复选框的第二列 - 当用户填写该框时,我希望将水果添加到我的 likedFruit 数组中。取消选中该框应从 likedFruit 数组中删除水果对象。

本质上我希望我的 NSTableView 在两个数组 Controller 之间加入。我感觉我应该为此制作一个单独的 Controller ,但我不确定如何解决这个问题。

我还应该提到,我知道我可以迭代数组并使用我需要的字段构造另一个对象,但我的目标是如果可能的话,通过使用绑定(bind)来做到这一点。

想法?

最佳答案

我认为你应该使用一个数组 Controller 。

您可以在 Fruit 上设置一个名为 liked 的属性。现在,您的“喜欢”复选框列已连接到 arrangedObjects.liked。稍后,当您想要确定所有喜欢的水果的集合时,您可以查询您的水果数组:

NSArray * likedFruits = [ allFruitsArray filteredArrayUsingPredicate:[ NSPredicate predicateWithFormat:@"liked = YES"] ] ;

如果在用户界面的其他部分中您只显示喜欢的水果,则可以将数组 Controller 的 filterPredicate 设置为上面的谓词以仅获取这些水果。

编辑:假设 NSFruit 是通过其他人的 API 提供的。让我们使用“向其他人的类添加属性的一般技术”:

@interface NSFruit (Liking)
@property ( nonatomic ) BOOL liked ;
@end

@implementation NSFruit (Liking)

-(BOOL)liked
{
return [ objc_getAssociatedObject( self, "_abliked" ) boolValue ] ;
}

-(void)setLiked:(BOOL)b
{
objc_setAssociatedObject( self, "_abliked", [ NSNumber numberWithBool:b ], OBJC_ASSOCIATION_RETAIN_NONATOMIC ) ;
}

@end

(我最近为大约 100 个帖子编写了相同的代码!)

关于objective-c - 填充 NSTableView 并将其绑定(bind)到多个数组 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714659/

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