I have Core Data Entities Person and Boundary. They have a many-to-many relationship (each person can have many boundaries, and each boundary can have many persons).
I a
[NSPredicate predicateWithFormat:@"ANY persons != %@", fred]
finds all objects that are related to any person other that Fred. What you want is
[NSPredicate predicateWithFormat:@"NOT(ANY persons = %@)", fred]
and this should return all objects that are not related to Fred.
However, there seems to be a Core Data bug that "NOT ANY" or "NONE" do not work correctly in a predicate, compare NSPredicate Aggregate Operations with NONE. The workaround is to use a SUBQUERY:
[NSPredicate predicateWithFormat:@"SUBQUERY(persons, $p, $p == %@).@count == 0", fred]