Результат запроса базовых данных не изменяется при использовании предиката для фильтрации

Я строю проект Core Data в Objective-C. У меня есть три таблицы с именами: CountryArea, ChargeStation и PlugType. Те имеют следующие отношения.

CountryArea<- >> ChargeStation<< - >>PlugType

Data:
area1<-->>chargestation1.hasPlugType<-->type1 && -->type2
area1<-->>chargestation2.hasPlugType<-->type1 && -->type3
area1<-->>chargestation3.hasPlugType<-->type2

Я извлекаю из таблицы CountryArea, которая имеет отношение ко-многим к ChargeStation, которая имеет отношение ко-многим к PlugType. Я пытаюсь исключить все ChargeStation, которые, например, содержат PlugType.type == 'type2', но если они имеют несколько типов, их не следует исключать с помощью этого предиката: исключать только станцию ​​3!

[NSPredicate predicateWithFormat:@"SUBQUERY(stations, $C, SUBQUERY($C.hasPlugType, $T,$T.type != %@).@count).@count > 0",@"type2"];

Это возвращает тот же результат, как если бы я не использовал предикат.

Любая помощь?

1 ответ

Решение

Вы хотите исключить все ChargeStations, которые имеют PlugType.type = "type", или, что то же самое, "включают только те ChargeStations, в которых число (PlugTypes with type = "type2") равно нулю". Так что постарайтесь:

[NSPredicate predicateWithFormat:@"SUBQUERY(stations, $C, ANY $C.hasPlugType.type = %@).@count = 0",@"type2"];
Другие вопросы по тегам