Iphone NSPredicate针对最大值(阵列FNSDATES)
我对NSPredicate有问题 我得到了一些引擎,其中谓词是根据来自web服务的定义构造的 我用的是这样的东西: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 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等)