1

我有一个对象数组,其中有两个属性 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 的文档:Predicate Format String Syntax了解更多信息。

于 2013-02-13T18:15:25.060 回答
1

这是你有的吗?

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

因为这缺少一个')',你想比较什么?字符串长度 > 字符串长度?还是一个数字@"3" > @"5"?

这是您的谓词编程指南

于 2013-02-13T18:10:46.440 回答