我有一个属性为 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]];
}
最佳答案
这应该有效:
NSArray *IDArray = @[@1, @2, @3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ID IN %@", IDArray];
备注:您永远不应该使用字符串格式化函数来组合谓词。使用
[NSCompoundPredicate orPredicateWithSubpredicates:...]
和类似的方法。原因是字符串和谓词在格式说明符扩展方面有不同的规则。
关于ios - NSPredicate 与 NSNumbers 的 NSArray(核心数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254783/