2つのプロパティXとY(両方)を持つオブジェクトの配列がありますNSString
。フィルタリングされたすべてのオブジェクトがX>Yになるように、述語を使用して配列をフィルタリングしたいと思います。現在、次を使用しています。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
私のプログラムはこの行でクラッシュします。この述語を書く正しい方法は何ですか?
2つのプロパティXとY(両方)を持つオブジェクトの配列がありますNSString
。フィルタリングされたすべてのオブジェクトがX>Yになるように、述語を使用して配列をフィルタリングしたいと思います。現在、次を使用しています。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
私のプログラムはこの行でクラッシュします。この述語を書く正しい方法は何ですか?
試してみてください-[NSPredicate predicateWithBlock:]
:
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(MyClass *object, NSDictionary *bindings) {
return [object.x compare:object.y] == NSOrderedDescending;
}];
これは、アルファベット順で必要な文字列であると想定しx
ています。y
そうでない場合は、質問を編集して、文字列のx>yが何を意味するかを正確に指定してください。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"X > Y"];
また
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];
うまくいくはずです、私はあなたが逃したと思います)
。
詳細については、Appleのドキュメント:述語フォーマット文字列構文を確認してください。
これはあなたが持っているものですか?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];
これには「)」がないため、何を比較しようとしていますか?string.length> string.length?それとも@"3">@ "5"の数字ですか?