NSPredicate与NSNrray的NSNumber(核心数据)

时间:2013-03-06 18:08:45

标签: ios objective-c core-data nspredicate

我的Core Data实体字段属性为ID。我想搜索所有Field实体的ID == 1,2或3。

如何将数组添加到NSPredicate中,而不是创建一个长附加字符串,如:

NSArray *IDArray = @[@1, @2, @3];

NSMutableString *predicateString = [NSMutableString string];

for (NSNumber *ID in IDArray) {
    [predicateString appendString:[NSString stringWithFormat:@"ID == %@, ID]];
}

1 个答案:

答案 0 :(得分:2)

这应该有效:

NSArray *IDArray = @[@1, @2, @3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ID IN %@", IDArray];

备注:您绝不应该使用字符串格式化函数来组合谓词。使用

 [NSCompoundPredicate orPredicateWithSubpredicates:...]

和类似的方法。原因是字符串和谓词对格式说明符的扩展有不同的规则。