使用 nsarray 的所有值过滤 NSMutableArray
Filter NSMutableArray with All the values of nsarray
我有这样的 MutableArray...
restaurants = ({
cuisines = ({
"cuisine_id" = 1;
"cuisine_name" = Indian;
},
{
"cuisine_id" = 2;
"cuisine_name" = SriLanka;
}
);}
{ cuisines = ({
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 2;
"cuisine_name" = Afghani;
}
);}
{cuisines =({
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 2;
"cuisine_name" = Afghani;
}
);}
)
我正在用 cuisine_name 的多个值过滤餐厅数组
例如,如果我有一个,
像这样的 Nsarray cuisine_name (
印度,
斯里兰卡,
中国人,
)
我想根据 cusine_name 的每个对象过滤我的 Restaurants 数组。
目前我是这样做的..
NSPredicate *predicateCuisines = [NSPredicate predicateWithFormat:@"(cuisines.cuisine_name = %@)",[cuisineTypes valueForKey:@"cuisine_name"]];
[self.arrRestaurantList filterUsingPredicate:predicateCuisines];
但是它过滤使用描述...对于包含整个三个值(印度、斯里兰卡、中国)的餐厅数组,但我想用 cuisine_name 的每个对象进行过滤。
任何帮助将不胜感激..
请使用这个
NSArray* arrtu4 = @[@{@"cuisines" : @[@{@"cuisine_id" : @1,@"cuisine_name" : @"Indian"},@{ @"cuisine_id" : @2, @"cuisine_name" : @"SriLanka"}]},@{ @"cuisines" : @[@{@"cuisine_id" : @1,@"cuisine_name" : @"Chinese"},@{@"cuisine_id" : @2,@"cuisine_name" : @"Afghani"}]},@{@"cuisines" :@[@{@"cuisine_id" :@1,@"cuisine_name" : @"Chinese"},@{ @"cuisine_id" : @2,@"cuisine_name" : @"Afghani"}]}];
NSMutableArray *arrryfilted = [NSMutableArray array];
NSArray *arrayCountrys = @[@"Chinese",@"SriLanka",@"Indian"];
for (int i = 0; i<arrtu4.count; i++)
{
NSArray *filterArray2 = [[arrtu4 objectAtIndex:i]valueForKey:@"cuisines"];
NSArray *filterArray3 = [filterArray2 filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return [arrayCountrys containsObject:[evaluatedObject valueForKey:@"cuisine_name"]] ;
}]];
[arrryfilted addObjectsFromArray:filterArray3 ];
}
NSLog(@"%@",arrryfilted);
输出:
2016-08-20 16:44:59.856 coredataReltaion[6762:152672] (
{
"cuisine_id" = 1;
"cuisine_name" = Indian;
},
{
"cuisine_id" = 2;
"cuisine_name" = SriLanka;
},
{
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 1;
"cuisine_name" = Chinese;
}
)
我有这样的 MutableArray...
restaurants = ({
cuisines = ({
"cuisine_id" = 1;
"cuisine_name" = Indian;
},
{
"cuisine_id" = 2;
"cuisine_name" = SriLanka;
}
);}
{ cuisines = ({
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 2;
"cuisine_name" = Afghani;
}
);}
{cuisines =({
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 2;
"cuisine_name" = Afghani;
}
);}
)
我正在用 cuisine_name 的多个值过滤餐厅数组 例如,如果我有一个,
像这样的 Nsarray cuisine_name ( 印度, 斯里兰卡, 中国人, )
我想根据 cusine_name 的每个对象过滤我的 Restaurants 数组。
目前我是这样做的..
NSPredicate *predicateCuisines = [NSPredicate predicateWithFormat:@"(cuisines.cuisine_name = %@)",[cuisineTypes valueForKey:@"cuisine_name"]];
[self.arrRestaurantList filterUsingPredicate:predicateCuisines];
但是它过滤使用描述...对于包含整个三个值(印度、斯里兰卡、中国)的餐厅数组,但我想用 cuisine_name 的每个对象进行过滤。 任何帮助将不胜感激..
请使用这个
NSArray* arrtu4 = @[@{@"cuisines" : @[@{@"cuisine_id" : @1,@"cuisine_name" : @"Indian"},@{ @"cuisine_id" : @2, @"cuisine_name" : @"SriLanka"}]},@{ @"cuisines" : @[@{@"cuisine_id" : @1,@"cuisine_name" : @"Chinese"},@{@"cuisine_id" : @2,@"cuisine_name" : @"Afghani"}]},@{@"cuisines" :@[@{@"cuisine_id" :@1,@"cuisine_name" : @"Chinese"},@{ @"cuisine_id" : @2,@"cuisine_name" : @"Afghani"}]}];
NSMutableArray *arrryfilted = [NSMutableArray array];
NSArray *arrayCountrys = @[@"Chinese",@"SriLanka",@"Indian"];
for (int i = 0; i<arrtu4.count; i++)
{
NSArray *filterArray2 = [[arrtu4 objectAtIndex:i]valueForKey:@"cuisines"];
NSArray *filterArray3 = [filterArray2 filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return [arrayCountrys containsObject:[evaluatedObject valueForKey:@"cuisine_name"]] ;
}]];
[arrryfilted addObjectsFromArray:filterArray3 ];
}
NSLog(@"%@",arrryfilted);
输出:
2016-08-20 16:44:59.856 coredataReltaion[6762:152672] (
{
"cuisine_id" = 1;
"cuisine_name" = Indian;
},
{
"cuisine_id" = 2;
"cuisine_name" = SriLanka;
},
{
"cuisine_id" = 1;
"cuisine_name" = Chinese;
},
{
"cuisine_id" = 1;
"cuisine_name" = Chinese;
}
)