0

私はPersonオブジェクトを持っています。このpersonオブジェクトには次の属性があります。

Name
StartDate
EndDate

Personこのオブジェクトをに保存していますarray。この配列には、 個以上の100 personオブジェクトが含まれる場合があります。

person以下は、その配列内のオブジェクトの例です。

John, Tue Feb 22, Thr Mar 30
Jack, Wed Mar 09, Fri Apr 21
Jack, Thu Mar 19, Fri Dec 20
Jack, Tue Jan 08, Fri Apr 26 etc..

たとえば、日付を指定する必要があり、オブジェクトの範囲内と配列Wed 29 Mar内にあるかどうかを確認する必要があります。これどうやってするの ?私の作業は次のとおりですが、機能しません(誤った結果が得られます)StartDateEndDatepersons

NSPredicate *datePred = [NSPredicate predicateWithFormat:@"StartDate>= %@ && EndDate<= %@",givenDate,givenDate];
            resultArray = [arrayContainingAllPersonObjects filteredArrayUsingPredicate:datePred ];

次の方法も試しましたが、これも間違った結果になります (SO の投稿から削除されました)。

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

何がこれを引き起こしているのか、私には手がかりがありません。ヘルプ

4

2 に答える 2

0

「%@」のように使用してみてくださいStartDate = '%@' && EndDate ='%@'

更新:

試す

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"StartDate = '%@', startDateHere]];
于 2012-04-25T11:37:59.417 に答える
0

StartDate と EndDate は NSDate オブジェクトですか?

述語に関するこの記事をご覧になることをお勧めします。フィルタリングと検索のコードを数行に減らすのに役立ちました: http://www.cocoanetics.com/2010/03/filtering-fun-with-predicates/

于 2012-04-25T13:01:46.990 に答える