[英]Why am I getting a “Unable to parse NSPredicate” error
我構建了以下謂詞,以便對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 <436.000000 AND 15.000000> aPosY AND 15.000000 <=(aPosY + aPosH)AND aStartTime LIKE 2013-05-09 *“”
我已經嘗試了我所知道的一切,搜索谷歌和SO,但仍然不明白為什么它失敗了......有人可以請教我嗎?
不要創建格式字符串,使用謂詞格式創建方法:
predicateWithFormat:
這允許謂詞在其認為合適時處理格式參數(在需要時添加引號)。
對於日期,您需要修改謂詞以使用范圍。 您無法直接檢查日期當天並忽略時間,因此您需要說:
date > startOfDay AND date < endOfDay
其中startOfDay
和endOfDay
是NSDate實例(可能使用NSDateComponents
創建)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.