получение объектов из основных данных, не входящих в набор

Я пытаюсь получить объекты из основных данных, которых нет в данном наборе, но я не смог заставить его работать.

Например, предположим, что у нас есть основная сущность данных с именем User, которая имеет несколько атрибутов, таких как userName, familyName, givenName и active. Учитывая массив строк, представляющих набор имен пользователей, мы можем легко получить всех пользователей, соответствующих этому списку имен пользователей:

NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
                                          inManagedObjectContext:moc];
[request setEntity:entity];

NSArray *userNames = [NSArray arrayWithObjects:@"user1", @"user2", @"user3", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName IN %@", userNames];
[request setPredicate:predicate];
NSArray *users = [moc executeFetchRequest:request error:nil];

Однако я хочу получить дополнение этого набора, т.е. я хочу, чтобы все пользователи были в основных данных для которых имена пользователей не указаны в массиве userNames. Есть у кого-нибудь идеи, как подойти к этому вопросу? Я думал, что будет достаточно просто добавить «НЕ» в предикат (т.е. «userName NOT IN% @») , но Xcode выдает исключение, в котором говорится, что формат предиката может не разбираться. Я также попытался использовать построитель предикатов, доступный для запросов на выборку, безуспешно. Документация тоже не особо помогла. Предложения? Комментарии? Спасибо за вашу помощь :)

26
задан Jack 6 September 2017 в 07:06
поделиться