Использование NSPredicate для сопоставления со списком целых чисел - PullRequest
5 голосов
/ 14 апреля 2011

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

Я использую это:

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

, но это возвращает только строки, где myIntValue равно 1.

Что я делаю не так?

Ответы [ 3 ]

10 голосов
/ 14 апреля 2011

Это работает:

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"]];
2 голосов
/ 14 апреля 2011

Вы пробовали это?

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

Документация может быть использована здесь.

1 голос
/ 26 июля 2017

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

[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]];

Так что нет необходимости оборачивать все в объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...