CoreData NSPredicate 数学故障
Posted
技术标签:
【中文标题】CoreData NSPredicate 数学故障【英文标题】:CoreData NSPredicate math malfunction 【发布时间】:2012-05-25 18:37:04 【问题描述】:首先,这是我的第一个问题,请客气:)。
你们有没有注意到 NSPredicate 中奇怪的行为数学函数?
我的例子是:
1) 我有带接口的出发班:
@interface OTDeparture : NSManagedObject
@property (nonatomic, retain) NSNumber * position;
@end
2) 我使用谓词创建获取请求:
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"(position-1)*(position-1) > 0"];
结果总是零个对象(谓词总是 NO)。也格式化 "(2-1)*(2-1) > 0" 和 "(position-1)*position > 0" 做同样的事情。
这些谓词格式按预期工作(按预期返回对象):
"2*(position-1) > 0"
"2*2 > 0"
"position-3 > 0"
是我做错了什么,还是这真的是一个错误?我没有使用任何第三方的东西,只是 Apple 提供的代码。
【问题讨论】:
【参考方案1】:似乎你是对的,CoreData 中有一些 :(( 我有同样的问题 - Is there any way to use NSPredicate to filter objects using distance calculation between points in CoreData 似乎接收你想要的东西的唯一方法是使用 predicateWithBlock: 方法,虽然我没有尝试过它自己呢。 请注意 predicateWithBlock: 仅适用于内存存储。所以很可能你最终会通过遍历所有实体来过滤数据,当然你可以在这样做之前尝试至少进行一些过滤。
【讨论】:
以上是关于CoreData NSPredicate 数学故障的主要内容,如果未能解决你的问题,请参考以下文章
NSPredicate 中的 SQL ORDER BY 等价物 - CoreData