首次构建NSPredicate
。
我想使用以下逻辑搜索managedobjectcontext
:
Search for a, grab all matches
Search for b, grab all matches, etc....
Nsarray *results = (has all a results, b results, etc);
我尝试的谓词是:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name== %@ OR name == %@ OR name == %@",a,b,c];
但是我对此predicate
...
编辑:我编写的示例方法
-(NSPredicate*)parsePartsIntoAPredicate:(NSMutableArray*)inputPartsNames{
NSSet *keys=[NSSet setWithArray:inputPartsNames];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"any self.@name in %@", keys];
NSLog(@"predicate = %@",predicate);
return predicate;
}
澄清:我有一个汽车数据库(20,000)每辆汽车都有多个部件。我想找到所有有a部分的车,所有有b部分的车,以及所有有c部分的车。然后我想返回一个带有a,b,c等部分汽车的数组......
如果您认为有更好的方式让我知道,但我正在接近这一点。我在说
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Cars" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:[self parsePartsIntoAPredicate:inputParts]];
NSError *error;
NSArray *records = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
我做错了什么?
答案 0 :(得分:2)
NSString *key;
NSMutableArray *tempArray;
NSPredicate *searchForName = [NSPredicate predicateWithFormat:@"name = %@", key];
NSArray *filterArray = [tempArray filteredArrayUsingPredicate:searchForName];
NSLog(@"%@",filterArray);
键是您的searchKeyword, tempArray 是您的CompleteArray,其中包含数据。
像这样使用。请提供您的数据。
答案 1 :(得分:2)
使用此
NSPredicate* predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ '%@'", @"SELF contains[c] ",searchText]];
答案 2 :(得分:0)
要获取所有Cars
个name
对象,这些对象是keys
集或数组中的字符串之一,请使用
[NSPredicate predicateWithFormat:@"name IN %@", keys]