0

NSCalendarと を使用しNSDateComponentsて の特定のコンポーネントのみを比較することに慣れていますNSDateNSPredicateただし、日付の配列をフィルタリングするとき、または属性の 1 つとして日付を持つ Core Data エンティティをフェッチするときに、を使用してこれを達成できるかどうか疑問に思っていました。

たとえばPerson、属性を持つCore Data エンティティを格納しているとしますbirthdaybirthday人の誕生日の日付と時刻の両方を格納する NSDate です。NSPredicate(または他の何か)を使用して、午後 7 時以降Personに sのみを取得できますか?birthday

または、これを達成するために日付と時刻を別々に保存する必要がありますか? (言って、保存birthdayDateしてbirthdayTime。)

NSDate(時間コンポーネントのみを持つ でフィルタリングを試みましたが、NSDate欠落しているすべての日付コンポーネントは、日付コンポーネントと時間コンポーネントの両方を持つものよりも早いと見なされるようNSDatesです。)

4

2 に答える 2

3

NSPredicate には、+predicateWithBlock:任意のロジックでカスタム述語を作成できる があります。ただし、この方法で作成された述語を、SQLLite ストアからの CoreData フェッチの述語として使用することはできません。その場合、一般的なフェッチを実行してから、結果を-[NSArray filteredArrayUsingPredicate:].

于 2012-05-11T17:38:00.083 に答える
0

コアデータです。時間を非正規化する必要があります。

于 2012-05-11T17:28:45.243 に答える