2015-09-15 3 views
0

Я пытаюсь установить размер ячейки в коллекцииView, используя образ загруженного объекта из coreData. Когда я пытаюсь получить доступ к объекту, он всегда равен нулю. Данные - это ошибка до и после попытки доступа к свойству. Я могу установить: [fetchRequest setReturnsObjectsAsFaults:NO];, но это не правильный способ.Не удается получить доступ к объекту объекта CoreData

Я стараюсь, чтобы получить изображение GalleryItem как это:

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    CGSize retval; 
    NDGGalleryItem* galleryItem2 = [_gallery.allGalleryItems objectAtIndex:indexPath.row]; 
    UIImage* image = galleryItem2.image; 
    retval.height = image.size.height/5 + 140; 
    retval.width = image.size.width/5; 

    return retval; 
} 

Это странно, что, когда я ставлю простые элементы итерации корыто, все свойства имеют собственные значения:

for (NDGGalleryItem *galleryItem in _gallery.allGalleryItems) { 
     NSLog(@"Name = %@", galleryItem.name); 
     image = galleryItem.image; 
    } 

Пожалуйста, помогите.

Мои классы:

GalleryItem

@interface NDGGalleryItem : NSManagedObject 

@property (nonatomic, retain) UIImage* image; 
@property (nonatomic, retain) NSString* name; 
@property (nonatomic, retain) NSArray* tags; 

@end 

GalleryDataManager - тот, который делает fetchrequest

-(NSArray*)getAllGalleryItems { 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"NDGGalleryItem" 
               inManagedObjectContext:context]; 
    NSError *error; 
    [fetchRequest setEntity:entity]; 
    //[fetchRequest setReturnsObjectsAsFaults:NO]; 
    NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 

    if ([fetchedObjects count]) { 
     return fetchedObjects; 
    } 
    else { 
     NSLog(@"No gallery items found in CoreData"); 
     ALog(@"%@",error); 
     return nil; 
    } 
} 

Галерея - магазины массив _allGalleryItems

@interface NDGGallery : NSObject 

@property (nonatomic) NSArray* allGalleryItems; 
@property (nonatomic) NDGGalleryDataManager* dataManager; 

@property (nonatomic, weak) id<NDGGalleryProtocol> delegate; 

@end 

ответ

0

I имел подобную проблему.

Ваши предположения верны, что данные, являющиеся ошибкой, не являются ошибкой и что они должны быть доступны после доступа к свойству.

В моем случае проблема заключалась в том, что я использовал два контекста. контекст, в котором я импортировал объекты, был в этом случае не тем, где я выбрал их в этом случае.

уход

принять, что вы используете SME контекст или что вы распространить изменения на них по телефону сохранить() или заставить их обновить, вызвав refreshObject (сливаются: правда)

Смежные вопросы