NSFetchedRequest
特定のテレビ番組の次の未視聴のエピソードを照会するための適切なものを取得しようとしています。NSFetchedResultsController に渡す必要があるため、 1 つの要求にまとめる必要があります。
My Model (CoreData):
Show
- Seasons:NSSet<Show>
Season
- Episodes:NSSet<Episode>
Episode
- first_aired:NSDate
- watched:BOOL
番組ごとに 1 つ (または 0) のエピソードが返されます。
これを複数のリクエストにまとめることができます。
例: をNSFetchedResultsController
fetch everyに設定しましたshow
。in私は最新のものを得るために- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
毎回繰り返しますShow
episode
+(Episode *)nextAiringEpisodeForShow:(Show *)show{
NSTimeInterval timeinterval = 0.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeinterval];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Episode"];
request.predicate = [NSPredicate predicateWithFormat:@"season.show = %@ AND watched = false AND season.seasonNumber > 0 AND first_aired > %@",show,date];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"first_aired" ascending:NO];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
return [[show.managedObjectContext executeFetchRequest:request error:nil] lastObject];
}
この方法での問題: すでにすべてのエピソードを視聴したショーがあります。これらは のように表示され(null)
、は として設定されているため、UITableView
から削除する方法はありません。さらに、この方法でソートする方法はありません。それとも、ここで何かが足りないのですか?!UITableView
NSFetchedResultsController
dataSource
TableView
first_aired