0

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"];  
            }

        }
4

0 に答える 0