Поскольку вы, похоже, думаете о своих сущностях как о таблицах sql, я сомневаюсь, что ваша выборка настроена эффективно.
Базовые данные - это не SQL.Сущности не являются таблицами.Объекты не являются строками.Атрибуты не являются столбцами.Отношения не объединяются.Базовые данные - это система управления графом объектов, которая может сохранять или не сохранять объектный граф, а может и не использовать SQL для этого далеко за кулисами.Попытка думать о базовых данных в терминах SQL приведет к тому, что вы полностью неправильно поймете базовые данные и приведете к большим трудностям и потерянному времени.
Если у вас есть набор потенциальных значений атрибутов для поиска, используйте оператор IN
в предикате, чтобы найти все совпадения, например
NSArray *newName=[NSArray arrayWithObject:@"Tom",@"Dick",@"Harry",nil];
NSPredicate *p=[NSPredicate predicateWithFormat:@"name NOT IN %@",newName];
…, затем используйте этот предикат для выборки.Любые возвращенные объекты уже имеют значения атрибутов в новых данных, и вы можете пропустить создание новых объектов для них.