ios - NSPredicate 与 NSNumbers 的 NSArray(核心数据)

标签 ios objective-c core-data nspredicate

我有一个属性为 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/

相关文章:

ios - 通过在 ios 7 中编码使电话响铃

c++ - 错误 : syntax error before '@' token (why?)

ios - 为什么 GCDAsyncUdpSocket 在广播模式下一段时间后无法发送/接收数据包?

ios - 设备时间格式设置为24小时时获取零日期

objective-c - 使用 NSPredicate 匹配整数列表

ios - 没有找到适合核心数据迁移的映射模型

ios - 如何将核心数据从 iOS 传输到 watch

php - iOS 应用程序中的 HTTPS Web 服务

ios - subview 未通过 twilio 传输

ios - Iphone 6 和 6+ 的全分辨率屏幕截图