Как предсказать через вложенные массивы с ключами

У меня есть массив под названиемself.eventsArray который выглядит так:

[ 
  {
        "artist": [
            {
                "artist_name": "Dillon Francis", 
                "name": "Dillon Francis", 
            }, 
            {
                "artist_name": "Major Lazer", 
                "name": "Major Lazer", 
            }, 
            {
                "artist_name": "Flosstradamus ", 
                "name": "Flosstradamus", 
            }
        ],  
        "name": "Mad Decent Block Party NYC", 
    },
  {
        "artist": [
            {
                "artist_name": "Ryan Raddon", 
                "name": "Kaskade", 
            }
        ], 
        "name": "Kaskade Atmosphere Tour NYC", 
    },
]

Я пытался отфильтровать его с помощьюNSPredicate два раза. Когда пользователь выполняет поиск, его нужно отфильтровать либо по имени (в массиве Artist), либо по имени (в массиве верхнего уровня).

NSPredicate *predicateEventsByName = [NSPredicate predicateWithFormat:@"SELF.%K contains[c] %@",@"name",searchText];
NSPredicate *predicateEventsByArtistName = [NSPredicate predicateWithFormat:@"SELF.%K.%K contains[c] %@",@"artist",@"name",searchText];

NSMutableArray *unfilteredEventsArray = [[NSMutableArray alloc] initWithCapacity:0];
unfilteredEventsArray = [NSMutableArray arrayWithArray:[self.eventsArray filteredArrayUsingPredicate:predicateEventsByName]];
[unfilteredEventsArray addObjectsFromArray:[self.eventsArray filteredArrayUsingPredicate:predicateEventsByArtistName]];


 [self.filteredEventsArray addObjectsFromArray:[[NSSet setWithArray:unfilteredEventsArray] allObjects]];

Используя этот код,self.filteredEventsArray будет заполнен любым поисковым термином, соответствующим верхнему уровню"name", Это не даст никаких результатов поиска для вложенного художника"name", Я подозреваю, что причина, по которой он не будет искать во вложенном массиве, заключается в следующей строке:

NSPredicate *predicateEventsByArtistName = [NSPredicate predicateWithFormat:@"SELF.%K.%K contains[c] %@",@"artist",@"name",searchText];

но я не могу понять, как изменитьpredicateWithFormat: чтобы сделать поиск через вложенный массив.

Ответы на вопрос(1)

Ваш ответ на вопрос