【发布时间】:2017-05-03 17:21:12
【问题描述】:
我正在构建一个复杂的 NSPredicate,它取决于许多变量。似乎效果最好的方法是将每个子句单独构建为一个字符串,将字符串组合成一个数组,将数组转换回一个字符串并使用 predicateWithFormat 将其读入谓词。除了在比较日期并出现以下错误的情况下,它的效果很好:
无法解析格式字符串“(canceled != 1)&&(starttime >=2016-12-18 13:50:41 +0000)”'
这是我构建这个子句的那一行。
typePredClause = [NSString stringWithFormat:@"(starttime >=%@)",nowstr];
starttime 是实体中的NSDate,这就是我得到nowstr的方式
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *nowstr = [dateFormatter stringFromDate:[NSDate date]];
我知道只使用predicateWithFormat 并将字符串排除在外是理想的,但谓词非常复杂,因此只能构建它。
谁能建议如何解决这个问题?
作为参考,这里是我结合所有子句的代码。
if (typePredClause.length > 0)
[predArr addObject:typePredClause];
NSString *predStr = [predArr componentsJoinedByString:@"&&"];
predicate = [NSPredicate predicateWithFormat:predStr];
【问题讨论】:
标签: ios objective-c nsdate nspredicate