簡體   English   中英

為什么我收到“無法解析NSPredicate”錯誤

[英]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

其中startOfDayendOfDay是NSDate實例(可能使用NSDateComponents創建)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM