Iphone NSPredicate针对最大值(阵列FNSDATES)

Iphone NSPredicate针对最大值(阵列FNSDATES),iphone,nsdate,nspredicate,max,Iphone,Nsdate,Nspredicate,Max,我对NSPredicate有问题 我得到了一些引擎,其中谓词是根据来自web服务的定义构造的 我用的是这样的东西: [NSPredicate predicateWithFormat:@"max({1,2,3})==3"] 这很好,但我需要NSDate对象的max函数。 这里写到max()函数只能获取包含表示数字的对象的数组 是否有使用此函数的解决方案(覆盖某些方法,为NSPredicate创建某些类别) 提前谢谢。好的,这是可能的,但很奇怪。我们必须以编程方式构建格式字符串。或者,我们可以通过

我对NSPredicate有问题

我得到了一些引擎,其中谓词是根据来自web服务的定义构造的

我用的是这样的东西:

[NSPredicate predicateWithFormat:@"max({1,2,3})==3"]
这很好,但我需要NSDate对象的max函数。 这里写到max()函数只能获取包含表示数字的对象的数组

是否有使用此函数的解决方案(覆盖某些方法,为NSPredicate创建某些类别)


提前谢谢。

好的,这是可能的,但很奇怪。我们必须以编程方式构建格式字符串。或者,我们可以通过创建单独的
NSExpression
对象来构建它,但这将需要更多的代码(尽管可能更安全,但无论如何)


这里的诀窍是使用自引用日期起的日期的绝对时间间隔作为
max()
函数的参数,然后使用
CAST()
将其结果转换回日期。可以找到有关如何使用带有日期的
CAST()
函数的更多信息。

好的,这是可能的,但很奇怪。我们必须以编程方式构建格式字符串。或者,我们可以通过创建单独的
NSExpression
对象来构建它,但这将需要更多的代码(尽管可能更安全,但无论如何)


这里的诀窍是使用自引用日期起的日期的绝对时间间隔作为
max()
函数的参数,然后使用
CAST()
将其结果转换回日期。有关如何使用带有日期的
CAST()
函数的详细信息,请参见。

此解决方案确实不错,但不能解决我的问题。 我得到了这样的东西:

NSPredicate* predicate = [NSPredicate predicateWithFormat: condition];
[predicate evaluateWithObject:nil substitutionVariables: currentForm];
条件可以是:

max($widgetWhichReturnDate.result.result,$widgetWhichReturnDate.result) 

此处使用的小部件取决于webservice。
所以我不喜欢对Date和int使用不同的函数(或者将来可能是float、double等)

这个解决方案确实不错,但不能解决我的问题。 我得到了这样的东西:

NSPredicate* predicate = [NSPredicate predicateWithFormat: condition];
[predicate evaluateWithObject:nil substitutionVariables: currentForm];
条件可以是:

max($widgetWhichReturnDate.result.result,$widgetWhichReturnDate.result) 

此处使用的小部件取决于webservice。 所以我不喜欢对Date和int使用不同的函数(或者将来可能是float、double等)