NSPredicate żądanie dotyczące braku określonego ciągu
Wyglądało na wysokie i niskie dla tego, ale nie mogę znaleźć odpowiedzi. Szukam podstawowego zapytania o dane dla wszystkich rekordów, które NIE są równe podanemu ciągowi. Na przykład wszystkie rekordy, które nie są równe identyfikatorowi bieżącej sesji. Próbowałem ich bezskutecznie:
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]];
Nic nie działa.
-------------------------------------------------- --- więcej kodu
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];
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", sessionID];
powinien działać, aby znaleźć wszystkie wpisy, w których atrybut nie jest równy (zakładając, że i to tego samego typu).
Jeśli oba są ciągami i chcesz znaleźć wszystkie wpisy, w których
nie zawiera
string jako podciąg, to ten predykat powinien działać:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (listingID CONTAINS %@)", sessionID];
Użyj „ZAWIERA [cd]”, jeśli porównania ciągów mają być wykonywane bez rozróżniania wielkości liter.
NOTE
: możesz podać nazwę atrybutu jako argument, ale musisz użyć zamiast jako formatu:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS %@)", @"listingID", sessionID];