多くの変数によって複雑なNSPredicateを構築しています。最も効果があると思われる方法は、各節を別々に文字列として作成し、文字列を配列に結合し、配列を文字列に変換して、predicateWithFormatを使用して述語に読み込む方法です。ここで構文を生成する構文を構築する
Unable to parse the format string "(canceled != 1)&&(starttime >=2016-12-18 13:50:41 +0000)"'
は、私はこの句を構築するラインである:それは私が日付を比較していると私は次のエラーを取得する一つのケースを除いて素晴らしい作品。
typePredClause = [NSString stringWithFormat:@"(starttime >=%@)",nowstr];
starttime
私はそれだけでpredicateWithFormat
を使用して、そこから文字列を残すために理想的であることを知っているが、述語があるエンティティでNSDate
であり、これは私がnowstr
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *nowstr = [dateFormatter stringFromDate:[NSDate date]];
を取得する方法でありますそれを構築することは唯一のものです。
誰でもこれを修正する方法を提案できますか?
参考として、ここではすべての節を組み合わせるコードです。
if (typePredClause.length > 0)
[predArr addObject:typePredClause];
NSString *predStr = [predArr componentsJoinedByString:@"&&"];
predicate = [NSPredicate predicateWithFormat:predStr];
複合述語アプローチを使用して文字列なしで問題を解決し、問題を解決しました。ありがとう! – Arjun