我有一个简单的NSPredicate,它没有给出正确的结果
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF.data.squareFootage >= %@", filterSquareFootage];
filteredArray = [[filteredArray filteredArrayUsingPredicate:resultPredicate] mutableCopy];
奇怪的是,这适用于所有6000> = 250、7000> = 250、8000> = 6000。但是,只要squareFootage == 10000的谓词10000> =任何较小的值就为假。
注意:squareFootage为10000是使用UISlider提取的最大值。如果我将值减小为任何较小的值,则谓词将得出true
我在这里遗漏了某些东西并错误地使用了谓词吗?
最佳答案
我假设您的属性存储为字符串而不是数字,因此
这些值将作为字符串进行比较:
"10000" < "250" < "6000"
使用
NSNumber
而不是NSString
(或另一些标量类型为NSInteger
)应该可以解决此问题。如果您无法更改
squareFootage
属性的数据类型,则执行以下操作谓词应该起作用:
[NSPredicate predicateWithFormat:@"SELF.data.squareFootage.intValue >= %d", [filterSquareFootage intValue]]
关于ios - NSPredicate问题大于等于,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18010856/