嗨,我有核心数据数据库的数字属性。他们是NSNumbers。默认值是0.0,但是当我尝试进行一些NSPredicated获取时,我得到"'NSInvalidArgumentException',原因:'Invalid predicate: nil RHS'“,因为属性值是0.0
谓词是用以下命令创建的:
[NSPredicate predicateWithFormat:@"(startValue => %@) AND (endValue <= %@) AND (someId == %@)",startNSNumber,endNSNumber, idString]我该如何解决这个问题?
发布于 2010-09-30 00:40:34
您要将浮动作为对象添加,而不是作为浮动?试试这个:
[NSPredicate predicateWithFormat:@"(startValue => %f) AND (endValue <= %f) AND (someId == %@)",startNSNumber,endNSNumber, idString];发布于 2010-09-30 03:10:17
我坚信你的一个变量是空的或者是自动释放的。
试试这个:
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];发布于 2010-09-30 00:41:44
好吧,考虑到您提供的谓词,简单的答案是:
startNSNumber、endNSNumber或idString均为空。如果你想把一些东西和NSPredicate中的nil进行比较,你需要替换成[NSNull null],而不是nil。
https://stackoverflow.com/questions/3823762
复制相似问题