1. ホーム
  2. objective-c

[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング

2022-07-20 08:16:36

質問

Core Dataモデルで NSDate プロパティがあります。データベースを日ごとにフィルタリングしたいのですが、どうすればよいですか?私は、この解決策には NSPredicate を含むと思いますが、それをどのようにまとめるかわかりません。

の2つの日を比較する方法は知っている。 NSDate を使用して NSDateComponentsNSCalendar でフィルタリングすることはできますが NSPredicate ?

おそらく私は、カテゴリを NSManagedObject サブクラスにカテゴリを作成して、年、月、日だけを含む素の日付を返すようにする必要があるかもしれません。そして、それを NSPredicate . これはあなたの推薦ですか、それとももっと簡単なものがありますか?

どのように解決するのですか?

NSDate *が与えられると 開始日 終了日 と、NSManagedObjectContext *を指定します。 moc :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:moc]];
[request setPredicate:predicate];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];