我有一个对象数组,其中有两个属性 X 和 Y(两者NSString
)。我想使用谓词过滤数组,使所有过滤的对象都具有 X > Y。目前,我正在使用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
我的程序在这一行崩溃。写这个谓词的正确方法是什么?
我有一个对象数组,其中有两个属性 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 的文档:Predicate Format String Syntax了解更多信息。
这是你有的吗?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(X > Y)"];
因为这缺少一个')',你想比较什么?字符串长度 > 字符串长度?还是一个数字@"3" > @"5"?
这是您的谓词编程指南