复合谓词不起作用

时间:2014-09-01 13:35:58

标签: ios objective-c

我有一个带有名称和地址的对象数组。 两个属性都是NSString类型。 但是,当我使用复合谓词时,两种结果都没有得到任何结果。如果我只使用一个谓词,那么它的效果非常好。 我的代码中有没有人知道这里出了什么问题?日Thnx

-(void)filterContentForSearchString:(NSString*) searchText
{

NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"SELF.name like[cd] %@", searchText];
NSPredicate *resultsPredicate2 = [NSPredicate predicateWithFormat:@"SELF.place like[cd] %@", searchText];

    NSPredicate *compoundpred = [NSCompoundPredicate andPredicateWithSubpredicates:@[resultsPredicate, resultsPredicate2]];

self.searchResults = [self.companies filteredArrayUsingPredicate:compoundpred];
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用单个谓词声明

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF.name like[cd] %@ OR SELF.place like[cd] %@", searchText, searchText];

直接用它过滤数组

self.searchResults = [self.companies filteredArrayUsingPredicate:predicate];