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」および「(位置-1)*位置 > 0」の形式でも同じことが行われます。

これらの述語形式は期待どおりに機能します (期待どおりにオブジェクトを返します)。

"2*(position-1) > 0"
"2*2 > 0"
"position-3 > 0"

私は何か間違ったことをしていますか、それともこれは本当にバグですか? 私はサードパーティのものを使用しておらず、Apple が提供するコードのみを使用しています。

4

1 に答える 1

2

あなたが正しいようです、CoreDataにいくつかあります:((私は同じ問題を抱えています-CoreDataのポイント間の距離計算を使用してオブジェクトをフィルタリングするためにNSPredicateを使用する方法はあり ますか?あなたが望むものを受け取る唯一の方法のようですpredicateWithBlock: メソッドを使用しますが、私自身はまだ試していません. predicateWithBlock: はメモリ内ストアに対してのみ機能することに注意してください. したがって、ほとんどの場合、すべてのエンティティを通過するだけでデータをフィルタリングすることになります. もちろん、試すことができますこれを行う前に、少なくともいくつかのフィルタリングを行います。

于 2012-10-31T06:29:55.607 に答える