我有一个对象数组,它们有两个属性X和Y(都是NSString
)。我想使用谓词过滤数组,以便所有过滤的对象都具有X>是的。目前,我正在使用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
我的程序在此行崩溃了。编写这个谓词的正确方法是什么?
答案 0 :(得分:2)
尝试-[NSPredicate predicateWithBlock:]
:
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(MyClass *object, NSDictionary *bindings) {
return [object.x compare:object.y] == NSOrderedDescending;
}];
这假定x
和y
是您想要按字母顺序排列的字符串。如果情况并非如此,请编辑您的问题以准确说明x> y代表字符串意味着。
答案 1 :(得分:2)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"X > Y"];
或
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];
应该可以正常工作,我想你错过了)
。
查看Apple的文档:Predicate Format String Syntax了解更多信息。
答案 2 :(得分:1)
这是你拥有的吗?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];
因为缺少')' 你想要比较什么? string.length> string.length减?或者它是一个数字@“3”> @ “5”?