微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – NSPredicate问题超过平等

我有一个简单的nspredicate,但没有给出正确的结果
nspredicate *resultPredicate = [nspredicate predicateWithFormat:@"SELF.data.squareFootage >= %@",filterSquareFootage];
filteredArray = [[filteredArray filteredArrayUsingPredicate:resultPredicate] mutablecopy];

奇怪的是,这适用于所有6000> = 250,7000> = 250,8000> = 6000.但是,只要squareFootage == 10000,10000> =任何较小值的谓词都是false.
注意:10000 for squareFootage是使用UiSlider获取的最大值.如果我将值减小到任何较小的值,则谓词结果为true

在这里遗漏了什么并使用谓词不正确吗?

解决方法

我假设您的属性存储为字符串而不是数字,因此
将值作为字符串进行比较:
"10000" < "250" < "6000"

使用NSNumber而不是Nsstring(或者某些标量类型作为NSInteger)应该解决问题.

如果无法更改squareFootage属性的数据类型,则以下内容
谓词应该有效:

[nspredicate predicateWithFormat:@"SELF.data.squareFootage.intValue >= %d",[filterSquareFootage intValue]]

原文地址:https://www.jb51.cc/iOS/335438.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐