2011-04-14 7 views

Répondre

10

Cela fonctionne:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

NSArray *idList = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], 
              [NSNumber numberWithInt:2], 
              [NSNumber numberWithInt:3], 
              [NSNumber numberWithInt:4], 
              nil]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idealForId IN $IDLIST"]; 
request.predicate = [predicate predicateWithSubstitutionVariables: 
    [NSDictionary dictionaryWithObject:idList forKey:@"IDLIST"]]; 
+1

Core Data stocke uniquement les objets de sorte que vous devez toujours convertir les scalaires en objets lorsque vous créez des prédicats. – TechZen

2

Avez-vous essayé?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myIntValue IN %@", 
[NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil]]; 

Le documentation peut être utile ici.

+0

Je crois que cela peut fonctionner pour les chaînes, mais cela ne semble pas fonctionner pour les nombres entiers. J'ai essayé [NSNumber numberWithInt: 1] au lieu de @ "1", mais cela n'a pas fonctionné non plus. – teedyay

+0

@ "1" est un NSString, @ 1 est un NSNumber – trapper

0

Je ne sais pas si cela a changé depuis que la question a été affiché, mais j'obtenir le même prédicat exact de tous les trois.

[NSPredicate predicateWithFormat:@"myIntValue IN {1, 2, 3, 4}"]; 

[NSPredicate predicateWithFormat:@"myIntValue IN {%d, %d, %d, %d}", 1, 2, 3, 4]; 

[NSPredicate predicateWithFormat:@"myIntValue IN %@", @[@1, @2, @3, @4]]; 

Donc pas besoin d'envelopper tout dans les objets.

Questions connexes