Фильтр NSMutableArray со всеми значениями nsarray

ios objective-c nsmutablearray

79 просмотра

1 ответ

У меня есть 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;
                }
            );}
        )

И я фильтрую массив ресторанов с несколькими значениями kitchen_name Например, если у меня есть,

Nsarray нравится это kitchen_name (индийская, шриланканская, китайская,)

Я хочу отфильтровать свой массив Restaurants на основе каждого объекта cusine_name.

В настоящее время я делаю так

        NSPredicate *predicateCuisines = [NSPredicate   predicateWithFormat:@"(cuisines.cuisine_name = %@)",[cuisineTypes      valueForKey:@"cuisine_name"]];
    [self.arrRestaurantList filterUsingPredicate:predicateCuisines];

Но это фильтрация Использование описания ... Для ресторанного массива, который содержит целые три значения (индийское, шриланканское, китайское), но я хочу фильтровать по каждому объекту kitchen_name. Любая помощь будет по достоинству оценена ..

Автор: Mohammed Hussain Источник Размещён: 08.11.2019 11:01

Ответы (1)


2 плюса

Решение

Пожалуйста, используйте это

  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;
    }
)
Автор: balkaran singh Размещён: 20.08.2016 09:27
Вопросы из категории :
32x32