timeDate 型の 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:]
どこが間違っていましたか?