Application というコア データ エンティティがあり、複数のスクリーンショットをセットとして追加できます。各スクリーンショットには「順序」属性があり、これを使用して各セットから最初のスクリーンショットのみを取得したいと考えています。
以下は私が現在使用しているコードですが、-to many 関係から特定の順序でスクリーンショットを引き出すために使用できる、より簡単で効率的なものがあるのではないでしょうか?
if(managedObject.screenshots.count>0)
{
//search for a screenshot
NSMutableArray* predicatesArray = [[NSMutableArray alloc] initWithCapacity:2];
[predicatesArray addObject:
[NSPredicate predicateWithFormat:@"SELF.order == %d",0]];
[predicatesArray addObject:
[NSPredicate predicateWithFormat:@"SELF.application == %@",managedObject]];
NSPredicate* compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates: predicatesArray];
NSFetchRequest *firstScreenshot = [NSFetchRequest fetchRequestWithEntityName:@"Screenshot"];
firstScreenshot.predicate = compoundPredicate;
NSError* error;
NSArray* results = [managedObject.managedObjectContext executeFetchRequest:firstScreenshot error:&error];
if(error)
{
DLog(@"%@",[error localizedDescription]);
}
//if we got a result
if(results.count>0)
{
Screenshot* screenshot = [results objectAtIndex:0];
cell.screenshot.image = [UIImage imageWithData:screenshot.image];
}else
{
cell.screenshot.image = [UIImage imageNamed:@"blank1.png"];
}
}