我有一个NSArrayController,我在上面用程序应用过滤器谓词:
- (void)setFilters {
NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(LMRootItem *rootItem,
NSDictionary *bindings) {
...
return YES;
}];
[_controller setFilterPredicate:pred];
}
当使用IB设置NSArrayController的内容绑定时,一切正常。
当我以编程方式设置NSArrayController的内容绑定时,我的过滤器谓词函数永远不会被调用,内容也永远不会被过滤:
[_controller bind:@"arrangedObjects"
toObject:_otherController
withKeyPath:@"arrangedObjects.@unionOfArrays.rootItems"
options:nil];
该绑定与我在IB中所做的绑定相同。
有人知道出了什么问题吗?
找到了。看来我应该这么做:
[_controller bind:@"contentArray"
toObject:_otherController
withKeyPath:@"arrangedObjects.@unionOfArrays.rootItems"
options:nil]