という属性を持つ(SQL)コードデータエンティティがありますdate
。次のように、述語とフェッチ リクエストを作成し、結果を保持する配列を宣言します。
NSDate *firstDate = <date1>;
NSDate *lastDate = <date2>;
NSArray *dates = [NSArray arrayWithObjects: firstDate, lastDate, nil];
NSPredicate *myPredicate = [NSPredicate predicateWithFormat:
@"date BETWEEN %@", dates];
NSFetchRequest * req = [NSFetchRequest fetchRequestWithEntityName:@"myEntity"];
NSArray * results;
以下の作品
results = [managedObjectContext executeFetchRequest:req error:nil];
// gets all records
results = [results filteredArrayUsingPredicate:myPredicate];
// results now has the records I wanted
しかし、以下はそうではありません
req.predicate = myPredicate;
NSArray * results = [managedObjectContext executeFetchRequest:req error:nil];
これはコンソールで
-[__NSTaggedDate constantValue]: 認識できないセレクターがインスタンスに送信されました...
すべてのレコードを取得してからフィルタリングする必要があるのは間違っているようです。フェッチ要求で述語が機能しないのはなぜですか? これは SQLite の制限ですか? 日付が s (つまり double) として格納されていることは知ってNSTimeInterval
おり、代わりに述語でこれらを試しましたが、同様の問題があります。