NSPredicate:如何将string视为数字?

我正在构build一个复合NSPredicate,以在iOS应用程序中使用sqlite上的核心数据进行获取请求。 一切已经正常,但是我不能包括最后的条件。 原因很简单:我需要检查存储为string的值是否在某个浮点范围内。 问题在于条件是按照字母顺序来检查的,而不是根据它的浮点值。 这里是代码:

NSString * conditionToBeAdded = [NSString stringWithFormat:@" && (%@ >= \"""%@\""") && (%@ <= \"""%@\""")", propertyName, myMinFloat, propertyName, myMaxFloat]; stringForPredicate = [stringForPredicate stringByAppendingString:conditionToBeAdded]; NSPredicate * myPredicate = [NSPredicate predicateWithFormat:stringForPredicate]; 

有谁知道如何构build一个NSPredicate对象,能够将string值检查为数字,以便在coredata请求中使用?

谢谢。

由于NSPredicates允许您使用与Key-Value Coding方法匹配的所有内容,您可以调用NSStrings方法,如:intValue或floatValue

 NSString * conditionToBeAdded = [NSString stringWithFormat:@" && (propertyName.floatValue >= %f ) && (propertyName.floatValue <= %f)", myMinFloat, myMaxFloat]; stringForPredicate = [stringForPredicate stringByAppendingString:conditionToBeAdded]; NSPredicate * myPredicate = [NSPredicate predicateWithFormat:stringForPredicate]; 

我希望有帮助。

您将需要将该string更改为一个数字,并正确地修复它。 stringsearch很 ,应该避免。 把数字string是一个巨大的性能打击没有收益。

至于你的实际谓词,你可以对string进行比较。 我怀疑你在谓词中的所有引号正在抛弃。 引号在谓词中是不需要的,除非你设置一个常量,在这种情况下你不是。 删除它们,然后再试一次。