我有一个数组控制器,我已经绑定了一个实体,排序描述符和谓词。 如果我在应用程序运行时更改谓词格式,它就会起作用,因此绑定正在运行。
我的问题是当我想要更改谓词时,f.ex。使用搜索词或用户输入的某个字符串,没有任何反应,但是当我向核心数据库添加记录时,tableview会更新。
所以我的问题是,如何告诉数组控制器谓词已经改变,它应该更新自己。这是一个代码,当我输入搜索词时运行,它也可以工作,我正确地获得所有NSLogs输出。只是我的tableview没有自我更新。
- (IBAction)didChangeSearch:(id)sender {
if (sender == searchField) {
NSString *searchterm = [sender stringValue];
if (searchterm.length > 1) {
predicate = [NSPredicate predicateWithFormat:@"name contains [c]%@", @"m"];
NSLog(@"Putting predicate to the job : %@", searchterm);
} else {
predicate = nil;
NSLog(@"There is nolonger any predicate");
}
}
NSLog(@"I just got %@", [sender stringValue]);
}
我想在开始时说我对绑定很新,直到今晚才使用它们,对它们有一种良好的感觉,并且喜欢它,为我节省了很多代码,我终于理解了它(尽可能多可以1天。)
答案 0 :(得分:2)
你应该使用self.predicate = .....这将确保发出正确的KVO通知,这将使你的tableview立即更新(这假设“谓词”是一个属性并绑定到你的数组controller的过滤谓词绑定)。