Cómo predicar a través de matrices anidadas con claves

Tengo una matriz llamadaself.eventsArray que se parece a esto:

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

He estado tratando de filtrarlo usandoNSPredicate dos veces. Cuando el usuario busca, debe filtrarse por nombre (en la matriz del artista) o por nombre (en la matriz de nivel 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]];

Utilizando este código,self.filteredEventsArray se rellenará con cualquier término de búsqueda que coincida con el nivel superior"name". No dará ningún resultado de búsqueda para el artista anidado."name". Sospecho que la razón por la que no buscará en la matriz anidada es por esta línea:

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

pero no puedo averiguar cómo cambiar elpredicateWithFormat: para hacer que la búsqueda a través de la matriz anidada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta