Próbuję pobrać kilka zapisów pewnego rodzaju, w oparciu o listę typów zdefiniowanych przez użytkownika ...Czy CoreData na iPhone obsługuje predykaty IN?
[fetchRequest setEntity:[NSEntityDescription entityForName:@"myRecord" inManagedObjectContext:self.managedObjectContext]];
NSSet *shipTypes = [NSSet setWithObjects:[NSNumber numberWithInt:70],
[NSNumber numberWithInt:71],
[NSNumber numberWithInt:72],
[NSNumber numberWithInt:73],
[NSNumber numberWithInt:74],
nil];
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"type in %@", shipTypes];
[fetchRequest setPredicate:aPredicate];
theRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
... Po uruchomieniu komunikat executeFetchRequest zgłasza wyjątek ...
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (type IN {71, 73, 70, 72, 74})'
Czy zrobiłem coś złego, czy to naprawdę nie jest obsługiwane?
To powinno zadziałać, ale nie mogę do końca życia zrozumieć, dlaczego tak nie jest. Przeczytaj dokument Składnia ciągu formatowania predykatów i sprawdź, czy możesz znaleźć coś: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html – Tim
Uzgodnione. Możesz spróbować NSArray zamiast NSSet, ale to powinno działać tak, jak zostało napisane. –
Jeśli działa, powinieneś oznaczyć jedną z odpowiedzi jako poprawną. –