2016-12-18 10 views
0

多くの変数によって複雑な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]; 

答えて

0

starttimeは、いくつかのNSDateプロパティがある場合は、日付から文字列を作成しないでください。 NSDateを使用してください。

あなたの述語を作成する方法はすべて間違っています。たくさんの弦を使って構築しないでください。

+0

複合述語アプローチを使用して文字列なしで問題を解決し、問題を解決しました。ありがとう! – Arjun

関連する問題