Подтвердить что ты не робот

Запрос NSPredicate для не содержащей конкретной строки

Посмотрел высоко и низко для этого, но не смог найти мой ответ. Я ищу запрос данных ядра для всех записей, которые НЕ равны указанной строке. Например, все записи, которые не равны текущему идентификатору сеанса. Я пробовал это безрезультатно:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", [sitListingID objectAtIndex:i]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS[cd] %@",@"listingID", [sitListingID objectAtIndex:i]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS %@",@"listingID", [sitListingID objectAtIndex:i]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID NOT like %@", [sitListingID objectAtIndex:i]];

Ничего не работает .HEEEEELP!!! -------------------------------------------------- --- больше кода

NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ListingRecord" inManagedObjectContext:context];
    [request setEntity:entity];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sessionID <> %@", uniqueSessionListings];
    [request setPredicate:predicate];
    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy];
4b9b3361

Ответ 1

Ваш первый предикат

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", sessionID];

должен работать, чтобы найти все записи, где атрибут listingID не равен sessionID (при условии, что listingID и sessionID имеют один и тот же тип).

Если обе строки и вы хотите найти все записи, где listingID не содержит строку sessionID в качестве подстроки, то этот предикат должен работать:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (listingID CONTAINS %@)", sessionID];

Используйте "CONTAINS [cd]", если сравнение строк должно выполняться в случайном и диакритическом режиме.

ПРИМЕЧАНИЕ. Вы можете указать имя атрибута в качестве аргумента, но тогда вы должны использовать %K вместо %@ как формат:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS %@)", @"listingID", sessionID];