菜鸟警告!我的应用程序通过 NSArrayController 全部通过绑定在标准 NSTableView 中显示数据。都很酷。
有一个 filterPredicate,“已完成的任务”,由一个复选框切换,该复选框在后台驱动 BOOL。这在应用程序运行、过滤、过滤关闭时效果很好,但是如果我在 init 或 awakeFromNib 中将 BOOL 设置为 NO,NSArrayContoller 会忽略 filterPredicate,但稍后会起作用。
我可以使用谓词将过滤后的数组传递给 AC,但猜测绑定和直接 filterPredicate 会更好。
AC 在 NIB 文件中初始化,通过查看 KVO 反馈,很早就创建了。filterPredicate 在 AppController 初始化时不存在,但在我们到达 awakeFromNIb 时存在。
有什么我想念的想法吗?
编辑:这是复选框操作调用的方法:
- (void)displayClosedJobs {
if (self.showClosedJobs)
{
self.showClosedPredicate=nil;
}
else
{
NSString *predValue=@"Closed";
self.showClosedPredicate=[NSPredicate predicateWithFormat:@"!(DisplayName contains[c] %@)",predValue];
}
[self changeTableSortOrder];}
这也在 init 和 awakeFromNib 上调用。