为啥我收到“无法解析 NSPredicate”错误
Posted
技术标签:
【中文标题】为啥我收到“无法解析 NSPredicate”错误【英文标题】:Why am I getting a "Unable to parse NSPredicate" error为什么我收到“无法解析 NSPredicate”错误 【发布时间】:2013-05-08 23:57:12 【问题描述】:我构建了以下谓词以针对 Core Data 存储使用 MagicalRecord。
// format the date correctly
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd*"]; // HH:mm
NSString *formattedDate = [dateFormat stringFromDate:currentlySelectedDate];
NSString *stringPredicate = [NSMutableString stringWithFormat:
@"aPosX >= %f AND aPosX < %f AND %f > aPosY AND %f <= (aPosY + aPosH) AND aStartTime LIKE %@",
[staffIndex floatValue], [staffIndex floatValue] + 218, touchPoint.y, touchPoint.y, formattedDate];
NSPredicate *predicate = ([NSPredicate predicateWithFormat: stringPredicate]);
它在最后一条语句中崩溃,并出现以下错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析格式字符串“aPosX >= 218.000000 AND aPosX aPosY AND 15.000000
我已经尝试了我所知道的一切,搜索了 Google 和 SO,但仍然不明白为什么它会失败...有人可以赐教吗?
【问题讨论】:
【参考方案1】:不要创建格式字符串,使用谓词格式创建方法:
predicateWithFormat:
这允许谓词处理它认为合适的格式参数(在需要时添加引号)。
对于日期,您需要修改谓词以使用范围。您不能直接只查看日期的哪一天而忽略时间,所以您需要说:
date > startOfDay AND date < endOfDay
其中startOfDay
和endOfDay
是NSDate 实例(可能使用NSDateComponents
创建)。
【讨论】:
谢谢...它不再崩溃,但谓词没有按我预期的方式工作...我有一个日期时间存储在 astartTime 和看来它正在查看整个日期/时间。我只想要日期,而不是时间......我如何让它做到这一点?以上是关于为啥我收到“无法解析 NSPredicate”错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到 AbstractDynamicObject$CustomMessageMissingMethodException 错误?