0

質問があります...コアデータに日付属性を持つエンティティがあります。ユーザーがそれを続行するか上書きできるように、今日の日付のレコードが存在するかどうかをアプリがデータストアをチェックできるようにしたいと思います。問題は、次のようなNSPredicateを使用してリクエストをフェッチしているだけです。

self.whereClause = [NSPredicate predicateWithFormat:@"(date = %@)", [NSDate date]];

日付をコンソールに印刷すると、日付が表示されます

date: 2012-04-26 22:16:45 +0000

そして、アプリは既存のレコードがあることを認識できません....時間/タイムゾーンコンポーネントが原因である可能性があります.....

では、時間コンポーネントなしでCore Dataから取得した2つのNSDateオブジェクトを比較するにはどうすればよいですか?

4

2 に答える 2

0

誰かが疑問に思っている場合に備えて、NSDate から時間コンポーネントを削除するためのコード スニペットへのリンクを次に示します。

NSDate から時間要素を削除する

于 2012-10-03T14:16:38.147 に答える
0

日付を作成して 00:00 時刻と比較する必要があります [NSDate date] には常に現在の時刻が含まれるため、日付のみの一致は不可能です。

NSDateComponentsを見て、まったく同じ時刻の日付を作成してください。

別の解決策は、(date > 2012-04-26 00:00:00 AND date < 2012-04-26 23:59:59) を検索するクエリを作成することです (一日の始まりと終わりに時刻を含む日付を作成する必要があります)

単一の完全一致を検索する場合は、最初のソリューションをお勧めします。

于 2012-04-27T06:57:41.520 に答える