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检查我编辑的答案,并使用它正在检查的最后一条语句,以你们两个的名字数组。。。我用粗体字发表那项声明。。试试看