Опитвам се да филтрирам детето на връзката в 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"
Когато търся музикален резултат с име "two", искам този резултат:
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. Намерих и не намерих нищо.