Ios 如何将nsstring与Nspredicate包含数组进行比较
我的代码是Ios 如何将nsstring与Nspredicate包含数组进行比较,ios,Ios,我的代码是 NSArray *arr; NSString *valueString=tf.text; if(![valueString isEqualToString:@""]) { arr=[valueString componentsSeparatedByString:@" "]; } NSMutableDictionary *dict=[[NSMutableDictionary alloc] init]; [dict setValue:@"Sunilkaushik" forKey:@
NSArray *arr;
NSString *valueString=tf.text;
if(![valueString isEqualToString:@""])
{
arr=[valueString componentsSeparatedByString:@" "];
}
NSMutableDictionary *dict=[[NSMutableDictionary alloc] init];
[dict setValue:@"Sunilkaushik" forKey:@"firstname"];
[dict setValue:@"kagushik" forKey:@"lastname"];
NSMutableDictionary *dict1=[[NSMutableDictionary alloc] init];
[dict1 setValue:@"ankurkumar" forKey:@"firstname"];
[dict1 setValue:@"kumar" forKey:@"lastname"];
NSMutableDictionary *dict2=[[NSMutableDictionary alloc] init];
[dict2 setValue:@"ankurgarg" forKey:@"firstname"];
[dict2 setValue:@"garg" forKey:@"lastname"];
NSMutableDictionary *dict3=[[NSMutableDictionary alloc] init];
[dict3 setValue:@"rahulrathi" forKey:@"firstname"];
[dict3 setValue:@"rathi" forKey:@"lastname"];
NSMutableDictionary *dict4=[[NSMutableDictionary alloc] init];
[dict4 setValue:@"gautamgangandhan" forKey:@"firstname"];
[dict4 setValue:@"gahandhan" forKey:@"lastname"];
NSMutableDictionary *dict5=[[NSMutableDictionary alloc] init];
[dict5 setValue:@"ajay" forKey:@"firstname"];
[dict5 setValue:@"" forKey:@"lastname"];
NSArray *contacts=[[NSArray alloc] initWithObjects:dict,dict1,dict2,dict3,dict4,dict5, nil];
NSPredicate *pred;
pred = [NSPredicate predicateWithFormat:@"firstname contains[cd]%@" ,arr];
contacts = [contacts filteredArrayUsingPredicate: pred];
它在最后一行崩溃。您的数组有两个对象,因此根据需要传递一个对象 NSPredicate*pred=[NSPredicate PREDITEWITHFORMAT:@“firstname 包含[cd]%@,[arr objectAtIndex:0]] 或 NSPredicate*pred=[NSPredicate PREDITEWITHFORMAT:@“firstname 包含[cd]%@,[arr objectAtIndex:1]] 否则,在NSPredicte中的两个数组中都使用两个参数进行搜索,如: NSPredicate*pred=[NSPredicatepredicateWithFormat:@“firstname 包含[cd]%@| | firstname包含[cd]%@,[arr objectAtIndex:0],[arr objectAtIndex:1]]强>
您可以分享崩溃消息吗?您应该创建一个全新的数组,然后执行
[contacts filteredarrayingpredicate:pred]
崩溃来自NSArray*
如果您想更改数组,请使用NSMutableArray
;值不是字符串“这是我从crashbut收到的消息,但我希望arr中的两个值都应在名字键中检查??有没有可能没有任何循环?@user3202240检查我编辑的答案,并使用它正在检查的最后一条语句,以你们两个的名字数组。。。我用粗体字发表那项声明。。试试看