嗨,我拥有带有数字属性的Core Data数据库。他们是NSNumbers。默认值为0.0但是当我尝试进行一些NSPredicated提取时,我得到“'NSInvalidArgumentException',原因:'无效谓词:nil RHS'”只是因为属性值为0.0
使用以下命令创建谓词:
[NSPredicate predicateWithFormat:@"(startValue => %@) AND (endValue <= %@) AND (someId == %@)",startNSNumber,endNSNumber, idString]
我该如何解决这个问题?
答案 0 :(得分:5)
您是将浮动作为对象添加,而不是浮动?试试这个:
[NSPredicate predicateWithFormat:@"(startValue => %f) AND (endValue <= %f) AND (someId == %@)",startNSNumber,endNSNumber, idString];
答案 1 :(得分:2)
我坚信你的一个变量是零或自动释放......
试试这个:
NSNumber *num1 = [NSNumber numberWithFloat:2.0];
NSNumber *num2 = [NSNumber numberWithFloat:3.0];
NSString *str = @"Test";
[NSPredicate predicateWithFormat:@"(startValue => %@) AND (endValue <= %@) AND (someId == %@)", num1, num2, str];
如果成功,则问题出在您的变量上。
如果您希望有时num1
或num2
为nil
,那么您可以将谓词重写为:
[NSPredicate predicateWithFormat:@"(startValue => %@) AND (endValue <= %@) AND (someId == %@)", num1 ? num1 : [NSNumber numberWithFloat:0.0], num2 ? num2 : [NSNumber numberWithFloat:0.0], idString];
答案 2 :(得分:1)
好吧,考虑到你提供的谓词,简单的答案是:
startNSNumber
,endNSNumber
或idString
均为零。如果您想在[{1}}中对nil
的内容进行比较,则需要在NSPredicate
中进行替换,而不是[NSNull null]
。
答案 3 :(得分:0)
IN NSpredicate使用字符串值作为浮点数字典key.floatValue并轻松使用。
[NSPredicate predicateWithFormat:@"(startValue.floatValue => %f) AND (endValue.floatValue <= %f) AND (someId == %@)",startNSNumber,endNSNumber, idString]
我觉得这篇文章很有用。