NSPredicate 中自己的函数(NSString 的 round)
我遇到了 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 中进行舍入函数,因此任何其他解决方案都是 欢迎
I got problem with NSPredicate.
I got predicate:
NSPredicate* pr = [NSPredicate predicateWithFormat:@"FUNCTION('12.12345','round',3) = 12.123"];
and defined extension for NSString:
-(double) round:(NSNumber*) precision;
When I call manually:
NSLog(@"%f",[s round:3])
where s is NSString, it's working prefectly, but used in NSPredicate rise:
NSInvalidArgumentException: rease -[NSCFString round]: unrecognized selector sent to instance.
I use solution used on page: http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression
The main question is to make round function in NSPredicate, so any other solutions are welcome
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
冒号 (
:
) 必须是FUNCTION
中选择器的一部分,因此它应该是FUNCTION('12.12345', 'round:', 3)< /code>
另外,我相信
round:
方法应该返回一个NSNumber *
,而不是原始类型。The colon (
:
) must be part of the selector in theFUNCTION
, so it should beFUNCTION('12.12345', 'round:', 3)
Also, I believe the
round:
method should return anNSNumber *
, not a primitive type.