MR_findFirstWithPredicate в недопустимом контексте
В следующем коде:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:1];
Person *person = [self.fetchedResultsController objectAtIndexPath:indexPath];
label.text = person.fullName;
UIImageView *iv = (UIImageView *)[cell viewWithTag:2];
NSPredicate *pr = [NSPredicate predicateWithFormat:@"person == %@", person];
Image *image = [Image MR_findFirstWithPredicate:pr inContext:person.managedObjectContext];
iv.image = image.image ? image.image : [UIImage imageNamed:@"placeholder"];
return cell;
}
Эта линия
Image *image = [Image MR_findFirstWithPredicate:pr inContext:person.managedObjectContext];
использует незаконный контекст. Я пытался использовать локальный контекст вместо person.managedObjectContext
, но это все еще незаконно.
Какие-нибудь мысли?
1 ответ
Решение
Зачем ты вообще это делаешь? Похоже, у объекта Person есть отношение Image. Просто используйте:
imageView.image = person.image ?: [UIImage imageNamed:@"default"];
Нет необходимости делать больше выборок, которые только затруднят чтение кода, а также замедляют работу вашего приложения.