Разница между всеми, любыми и некоторыми операторами в NSPredicate
Я действительно изо всех сил пытаюсь понять эти 3. Похоже, что ANY
и SOME
делают одно и то же, но я не вижу разницы с ALL
.
2 ответа:
Давайте составим список групп. В каждой группе есть члены типа человек. У каждого человека есть свой возраст.
Все члены.возраст > 30
Означает, что вы найдете группу с членами, которые все старше 30 лет. Вы не найдете группу, в которой хотя бы один член был бы моложе 30 лет.
Любые члены.возраст > 30
Означает, что вы найдете группу по крайней мере с одним членом старше 30 лет. Вы не найдете группу, в которой все участники составляют 30 или моложе.
Group1 > 30 Amin 45 YES Chris 29 NO --- All NO (because Chris is too young) Any YES (because Amin is old enough) Group2 > 30 Amin 45 YES Foo 35 YES --- All YES (because all members are old enough) Any YES (because at least one member is old enough) Group3 > 30 Chris 29 NO Bar 21 NO --- All NO (because at least one member is too young) Any NO (because all members are too young)
С предикатом ALL вы найдете Group2, потому что все члены (Amin, Foo) соответствуют предикату. С любым предикатом вы найдете обе группы, потому что в обеих группах по крайней мере один член соответствует предикату.
ALL
иANY
являются базовыми логическими операторами.
ALL predicate
принимает значение true, когдаpredicate
принимает значение true для каждый элемент.Обратите внимание, что вы всегда можете выразить все предикаты с помощью любого и наоборот, например
ANY predicate
принимает значение true, когдаpredicate
принимает значение true по крайней мере для 1 элемента.ALL condition
эквивалентноNOT (ANY NOT(condition))
.Вы можете найти дополнительную информацию в руководстве по программированию предикатов , Глава агрегатные операции