0

我有一个数组控制器,我已经绑定了一个实体,排序描述符和谓词。如果我在应用程序运行时更改谓词格式,它可以工作,所以绑定工作。

我的问题是当我想更改谓词 f.ex 时。使用用户输入的搜索词或某些字符串,没有任何反应,但是当我向核心数据数据库添加记录时,表格视图会更新。

所以我的问题是,我如何告诉数组控制器谓词已经改变并且它应该更新自己。这是我输入搜索词时运行的代码,它也可以正常工作,并且我可以正确获取所有 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天能够)。

4

1 回答 1

2

您应该使用 self.predicate = ..... 这将确保发送正确的 KVO 通知,这将使您的 tableview 立即更新(这假定“谓词”是一个属性并绑定到您的数组控制器的过滤谓词捆绑)。

于 2012-05-19T01:21:13.163 回答