Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSPredicate:如何将字符串视为数字?_Ios_Xcode_Core Data_Nspredicate - Fatal编程技术网

Ios NSPredicate:如何将字符串视为数字?

Ios NSPredicate:如何将字符串视为数字?,ios,xcode,core-data,nspredicate,Ios,Xcode,Core Data,Nspredicate,我正在构建一个复合NSPredicate,在iOS应用程序中使用sqlite上的核心数据来发出获取请求。一切都很好,但我不能包括最后一个条件。原因很简单:我需要检查存储为字符串的值是否在某些浮点范围内。问题是这些条件是按字母顺序检查的,而不是根据其浮点值。这是代码: NSString * conditionToBeAdded = [NSString stringWithFormat:@" && (%@ >= \"""%@\""") && (%@ <=

我正在构建一个复合NSPredicate,在iOS应用程序中使用sqlite上的核心数据来发出获取请求。一切都很好,但我不能包括最后一个条件。原因很简单:我需要检查存储为字符串的值是否在某些浮点范围内。问题是这些条件是按字母顺序检查的,而不是根据其浮点值。这是代码:

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

NSString*conditionToBedded=[NSString stringWithFormat:@&&((@>=\““%@\”)&(%@您需要将该字符串更改为一个数字并正确修复它。字符串搜索速度,应该避免。将数字放入字符串是一个巨大的性能损失,但没有任何好处


至于您的实际谓词,您可以对字符串进行<或>比较。我怀疑谓词中的所有引号都是多余的。除非您设置了一个常数,否则谓词中不需要引号。请删除它们,然后重试。

,因为NSPredicates允许您使用se匹配键值编码方法的所有内容,您可以调用NSString方法,如:intValue或floatValue

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

NSString*conditiontobeaded=[NSString stringWithFormat:@“&&(propertyName.floatValue>=%f)&&(propertyName.floatValue您过滤的对象是什么类型的?是否可以反过来在您的对象上创建一个只读属性,将字符串转换为NSNumber?这样您就可以完全控制存储的字符串不包含有效数字的情况。这是应用程序的模型,它保存所有的字符串这些对象有许多属性(名称、地址、价格等)所有这些都是NSString。到目前为止,我通过在没有此条件的情况下执行fetch并过滤数组来解决问题,但速度有点慢。我尝试了您的解决方案,它不起作用,因为它在模型实体定义中找不到属性,这是一个很好的点,但我需要再次定义我的模型,创建mom文件,生成CLAs、 然后重新导入所有数据,我想您可以使用一个自定义类来支持您的实体,该自定义类实际上只添加了readonly属性。这可能会导致数据模型的新版本,因此需要进行数据迁移,这应该是可行的,因为两个版本的数据模型只在添加自定义类时有所不同。自动迁移应该是一种可行的方法只要你有旧版本和新版本的dat amodel Available,我们就可以解决这个问题。这也很有趣,可以考虑用于未来的应用程序。这次我解决了这个问题,也许我们可以肯定不可能构建这样的谓词,不是吗?无论如何,谢谢你。这个语法很有效,但结果仍然不正确.attribute01.intValue<120之类的谓词不会返回包含“50”的字符串