我遇到了NSPredicate的问题。
我得到了谓词:
NSPredicate* pr = [NSPredicate predicateWithFormat:@"FUNCTION('12.12345','round',3) = 12.123"];
并定义了NSString的扩展名:
-(double) round:(NSNumber*) precision;
当我手动打电话时:
NSLog(@"%f",[s round:3])
其中s是NSString,它完美地工作,但在NSPredicate中使用: NSInvalidArgumentException:rease - [NSCFString round]:发送到实例的无法识别的选择器。
我使用页面上使用的解决方案:http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression
主要问题是在NSPredicate中实现循环功能,欢迎任何其他解决方案
答案 0 :(得分:1)
冒号(:
)必须是FUNCTION
中选择器的一部分,因此它应该是FUNCTION('12.12345', 'round:', 3)
另外,我认为round:
方法应该返回NSNumber *
,而不是原始类型。