2

現在の時刻に基づいてレコードをフィルター処理NSPredicateする (コア データで使用するためNSFetchRequestの)を作成しようとしています。NSFetchedresultsController

述語が作成された時間ではありません:

[NSPredicate predicateWithFormat:@"(criticalDate < %@)", [NSDate date]]

しかし、常に新しい fetchRequests で fetchedResultsController を更新することを避けたいので、述語が評価される時間。私が探しているもの(しかし、自分で見つけることはできません)は次のようなものです:

[NSPredicate predicateWithFormat:@"(criticalDate < ????)"]

それは iPhone 用です。つまり、now()サポートされていないので、解決策が何であれ、ハックのようなものになると思います。

前もって感謝します

4

2 に答える 2

7

使用したい:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"criticalDate < now()"];
于 2012-05-19T17:48:35.880 に答える
0

フェッチの直前に述語を作成すると、述語が作成された時間とフェッチが実行された時間の差は、最大で 1 ミリ秒になる可能性があります。

これが重要な使用シナリオを想像することはできません。説明してください。

ただし、その時差があまりにも大きすぎる場合は、次の解決策をお勧めします。いくつかのテストを実行して、最も可能性の高い時間差を特定します。次に、述語を作成するときに、時差を未来に追加します。したがって:

[NSPredicate predicateWithFormat:@"criticalDate < %@", 
   [[NSDate date] dateByAddingTimeInterval:0.001]]; 

この問題は一種の学術的な問題だと思います... :-)

于 2012-05-19T19:04:29.147 に答える