"MeterReading"エンティティの結果を取得しようとしていますが、 "timestamp"と "reading"という2つのプロパティがあります。 「タイムスタンプ」はNSDateです。私は今、正確な日付のオブジェクトを取得しようとしています。NSPredicateを使用してNSManagedObjectContectから正確なNSDateを取得する
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MeterReading" inManagedObjectContext:context];
[request setEntity:entity];
NSLog(@"%f", [self.timestamp timeIntervalSince1970]);
NSPredicate *pre = [NSPredicate predicateWithFormat:@"timestamp == %@", self.timestamp];
NSLog(@"%@", pre);
[request setPredicate:pre];
すぐ、self.timestampを予め別のViewControllerに渡され、のNSLogを示す:
1290264372.210091
NSPredicateログ
をタイムスタンプ== CAST( 311957172.210091、 "NSDate")
最初の質問:なぜ2つの数字が同じではないのですか?
第2の重要な質問:ManagedContextでは、日付付きの4つのエントリがあります。 「==」の代わりに「< =」を使用すると、渡した日付よりも小さい日付の結果が得られます。なぜ "=="演算子で1つの日付を得ることができないのですか?これは私の日付の精度に関連することができますか?
ありがとうございます!
、ほとんど働いて、ありがとう!配列を渡すとエラーが発生しましたが、2つのnsdateを手動で述語に渡しました。 :) – denbec
おっと、申し訳ありません!しかし、助けてくれてうれしい。 –
この例は、コアデータでは機能しません。あなたは次のようなものを使う必要があります:http://zdam.posterous.com/core-data-fetch-by-date – SpaceTrucker