1

首先,这是我的第一个问题,所以很好:)。

你们有没有注意到 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 提供的代码。

4

1 回答 1

2

似乎你是对的,CoreData 中有一些 :(( 我有同样的问题 -有没有办法使用 NSPredicate 使用 CoreData 中的点之间的距离计算来过滤对象 似乎是接收你想要的东西的唯一方法是使用 predicateWithBlock: 方法,虽然我自己还没有尝试过。注意 predicateWithBlock: 仅适用于内存存储。所以很可能你最终会通过遍历所有实体来过滤数据,当然你可以尝试在执行此操作之前至少进行一些过滤。

于 2012-10-31T06:29:55.607 回答