使用NSPredicate匹配整数列表

时间:2011-04-14 11:18:21

标签: objective-c core-data

我有一个带整数字段的表。我想选择该字段包含几个不同值的所有行。

我正在使用它:

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

但这仅返回myIntValue为1的行。

我做错了什么?

3 个答案:

答案 0 :(得分:10)

这有效:

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 :(得分:2)

你试过这个吗?

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

这里可能会使用documentation

答案 2 :(得分:1)

我不知道自问题最初发布以来这是否有所改变,但我得到了所有这三个完全相同的谓词。

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

所以不需要将所有内容都包装在对象中。