我有一个带整数字段的表。我想选择该字段包含几个不同值的所有行。
我正在使用它:
[NSPredicate predicateWithFormat:@"myIntValue IN {1,2,3,4}"]
但这仅返回myIntValue
为1的行。
我做错了什么?
答案 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]];
所以不需要将所有内容都包装在对象中。