2012-04-23 19 views
1

NSPredicateを使用して、指定された日付が特定の時間内に収まるかどうかを確認する必要があります。日付が特定の範囲内にあるかどうかを調べるためのNSPredicateの作成

例えば、私がデータ12 Mar, 2012を提供する場合。それはstartdate10 Mar 2012である上記の例でstartdateenddate

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(statrDate >= %@) AND (enddate <= %@)", providedDate, ProvidedDate]; 

1)の間にある場合には、参照する必要があり、endDate20 Mar 2012あります。しかしNSPredicateは何も返されません。なぜなら私は2012年3月12日をprovidedDateと指定しているからです。

2は、i)はBETWEEN句を使用することができますので、このシナリオ

答えて

1

は、化合物の述語を使用します。

NSPredicate *greaterThanPredicate = [NSPredicate predicateWithFormat:@"statrDate <= %@", providedDate]; 
NSPredicate *lessThanPredicate = [NSPredicate predicateWithFormat:@"enddate >= %@", providedDate]; 
NSPredicate *betweenPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:greaterThanPredicate, lessThanPredicate, nil]]; 

あなたがしたので、私は>=<=を使用。包括的でないと思われる場合は、それぞれ><に切り替えます。

1

ジャストブラケットを削除してみてください:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"statrDate >= %@ AND enddate <= %@", providedDate, ProvidedDate]; 
+0

はこれを参照してください。http://stackoverflow.com/q/8364495/1126111 – Hector

関連する問題