Я пытаюсь отфильтровать дочерние отношения в coredata, но проблема в том, что Coredata фильтрует по родителю, и это правильно, но не фильтрует дочерние элементы.
Модель:
Volumen <-->> MusicScore
Я хочу отфильтровать строки музыкального ядра по объему.
Мой NSPredicate таков:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(relation_music_score, $musicscore, ANY $musicscore.nameMusicScore CONTAINS[cd] %@).@count > 0", searchStr];
self.collectionVolumen = [BOIVolumen MR_findAllWithPredicate:predicate];
CoreData предоставит мне все тома, которые содержат название найденной музыкальной партитуры, но я хочу, чтобы все объемы с поиском только музыкальной партитуры, а не всей музыкальной партитуры.
Пример:
Volumens
name = "One",
etc..
relation_music_score = NSOrderedSet
Music Score (1)
name = "One"
Music Score (2)
name = "two"
Volumens
name = "Two",
etc..
relation_music_score = NSOrderedSet
Music Score (3)
name = "three"
Music Score (4)
name = "four"
Когда я ищу музыку с названием "два", мне нужен такой результат:
Volumens
name = "One",
etc..
relation_music_score = NSOrderedSet
Music Score (2)
name = "two"
И предыдущий NSPredicate получил меня:
Volumens
name = "One",
etc..
relation_music_score = NSOrderedSet
Music Score (1)
name = "One"
Music Score (2)
name = "two"
ИЗМЕНИТЬ:
Я пытаюсь отфильтровать отношения с этим предикатом и кодом:
for (int i = 0; i < [self.collectionVolumen count]; i++) {
BOIVolumen *volumen = [self.collectionVolumen objectAtIndex:i];
NSOrderedSet *musicStore = [[self.collectionVolumen objectAtIndex:i] relation_music_score];
NSPredicate *filterMusicScore = [NSPredicate predicateWithFormat:@"nameMusicScore CONTAINS[cd] %@", searchStr];
NSOrderedSet *musicStoreTemporal = [musicStore filteredOrderedSetUsingPredicate:filterMusicScore];
volumen.relation_music_score = musicStoreTemporal;
}
и всегда я получаю эту ошибку Левая сторона для оператора ALL или ANY должна быть либо NSArray, либо NSSet. Я нашел, но ничего не нашел.