Como predicar por meio de matrizes aninhadas com chaves

Eu tenho uma matriz chamadaself.eventsArray que se parece com isso:

[ 
  {
        "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", 
    },
]

Eu tenho tentado filtrá-lo usandoNSPredicate duas vezes. Quando o usuário pesquisa, ele precisa ser filtrado por nome (na matriz do artista) ou nome (na matriz de nível superior).

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]];

Usando este código,self.filteredEventsArray será preenchido com qualquer termo de pesquisa correspondente ao nível superior"name". Não fornecerá resultados de pesquisa para o artista aninhado"name". Eu suspeito que a razão pela qual ele não irá procurar através da matriz aninhada é por causa desta linha:

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

mas eu não consigo descobrir como mudar opredicateWithFormat: para fazê-lo pesquisar através da matriz aninhada.

questionAnswers(1)

yourAnswerToTheQuestion