我的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]];
}
答案 0 :(得分:2)
这应该有效:
NSArray *IDArray = @[@1, @2, @3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ID IN %@", IDArray];
备注:您绝不应该使用字符串格式化函数来组合谓词。使用
[NSCompoundPredicate orPredicateWithSubpredicates:...]
和类似的方法。原因是字符串和谓词对格式说明符的扩展有不同的规则。