time
Date 型の attribute を持つエンティティがあります。私はそれの時間要素だけを気にします。クラス ファイルを生成するとき、プリミティブ データ型にスカラー プロパティを使用することにしました。そのため、NSTimeInterval
の代わりに が使用されNSDate
ます。
attributeを保存するには、エンティティに割り当てる前にtime
文字列を解析する必要があります。NSDateFormatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"H:mm"];
NSTimeInterval time = [[dateFormatter dateFromString:@"19:20"] timeIntervalSince1970];
entity.time = time;
レコードをフェッチするために述語を使用する場合、私は再びNSDateFormatter
日付コンポーネントを「切り捨て」ていました。
NSDate *timeNow = [self.defaultDateFormatter dateFromString:
[self.defaultDateFormatter stringFromDate:[NSDate date]]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"time >= %@", timeNow];
// build the rest of the NSFetchRequest...
問題は、すべてのレコードが戻ってきたことです。一部のレコードにはtime
以前に属性timeNow
があり、一部には後の属性がありました。Bueを使用して返されたレコードの属性と比較timeNow
したところ、実際に正しい結果が返されました。time
[NSDate compare:]
どこが間違っていましたか?