私は座標(x、y、z)を持つエンティティを持つストアを持っています。 @ "sqrt(x x + y y + z * z)<距離のような述語を使用してそれらをフェッチしたいと思います。NSPredicate predicateWithFormatで関数を使用する方法はありますか:
これを行う方法はありますか?私はpredicateWithFormatとTHIを行うことを試みた
:
私も
NSExpression * dxExpression = [NSExpression expressionForFunction:@"from:subtract:"
arguments:[NSArray arrayWithObjects:
[NSExpression expressionForConstantValue: [NSNumber numberWithFloat:currX]],
[NSExpression expressionForKeyPath:@"self.xCoord"], nil]
];
NSExpression * dxSqrExpression = [NSExpression expressionForFunction:@"multiply:by:"
arguments:[NSArray arrayWithObjects:dxExpression, dxExpression, nil]
];
のように見えます。しかし、それは唯一の階層ではない表現のために働く多くのコードを書きました。すなわち、dxExpressionが正常に動作しますが、私はdxSqrExpressionを使用しようとしているとき、私はエラー
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Unsupported function expression (-140.857 - #self.xCoord) * (-140.857 - #self.xCoord)'
私は自己せずに試してみたを取得していますが、これはあまりにも動作しませんので。
ありがとうございます、ありがとうございます。
を見ますNathanのソリューションは機能しますが、店舗が大きい場合は高価になる可能性があります。最適化の1つの方法は、最初に、実際に探している境界の球の代わりにバウンディングボックスで結果を返すNSPredicateを使用することです。次に、Nathanが提案したフィルタメソッドを使用して精度を向上させることができます。 – mprivat