1

2つのプロパティXとY(両方)を持つオブジェクトの配列がありますNSString。フィルタリングされたすべてのオブジェクトがX>Yになるように、述語を使用して配列をフィルタリングしたいと思います。現在、次を使用しています。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];

私のプログラムはこの行でクラッシュします。この述語を書く正しい方法は何ですか?

4

3 に答える 3

2

試してみてください-[NSPredicate predicateWithBlock:]

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(MyClass *object, NSDictionary *bindings) {
        return [object.x compare:object.y] == NSOrderedDescending;
}];

これは、アルファベット順で必要な文字列であると想定しxています。yそうでない場合は、質問を編集して、文字列のx>yが何を意味するかを正確に指定してください。

于 2013-02-13T18:10:05.127 に答える
2
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"X > Y"];

また

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];

うまくいくはずです、私はあなたが逃したと思います)

詳細については、Appleのドキュメント:述語フォーマット文字列構文を確認してください。

于 2013-02-13T18:15:25.060 に答える
1

これはあなたが持っているものですか?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];

これには「)」がないため、何を比較しようとしていますか?string.length> string.length?それとも@"3">@ "5"の数字ですか?

これが述語プログラミングガイドです

于 2013-02-13T18:10:46.440 に答える