0

複数選択のためにELCImagepickerControllerを使用しているプロジェクトを構築しており、選択した画像をコアデータに保存しています。現在、別の VC でこれらの画像を取得し、UICollectionView に表示しています。

しかし、ここで直面している問題は、画像が collectionView に正しく表示されないことです。私は2つの混乱を抱えています。

  • 画像がコア データに適切に保存されているかどうか。
  • 画像が保存されている場合、適切にフェッチされているかどうか。

ここでは、選択した画像をコアデータに入力しています

- (void)imagePicker:(SNImagePickerNC *)imagePicker didFinishPickingWithMediaInfo:(NSMutableArray *)info
{

    _arrImages = [[NSMutableArray alloc]init];
    _imgdata = [[NSMutableData alloc]init];
    AppDelegate* app=(AppDelegate*)[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *context = app.managedObjectContext;

    Albums *objPhotos = (Albums *)[NSEntityDescription insertNewObjectForEntityForName:@"Albums" inManagedObjectContext:context];

//get images
    for (int i = 0; i < info.count; i++) {
        ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
        [assetLibrary assetForURL:info[i] resultBlock:^(ALAsset *asset) {
        UIImage *image = [UIImage imageWithCGImage:[asset aspectRatioThumbnail]];
         _imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
        [objPhotos setPhotosInAlbum:self.imageData];



    } failureBlock:^(NSError *error) {     }];
}
 NSError * err = nil;
[context save:&err];


if (![context save:&err]) {
    NSLog(@"Can't Save! %@ %@", err, [err localizedDescription]);
}
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success!!" message:@"Photos Successfully Selected!" delegate:self cancelButtonTitle:@"DONE" otherButtonTitles:nil];
[alert show];

} 

ここで、選択した画像を取得しています

-(NSArray *)getMenCategoryList
{
    AppDelegate* app=(AppDelegate*)[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *moc=app.managedObjectContext;
    NSFetchRequest *fetch = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity =  [NSEntityDescription entityForName:@"Albums" inManagedObjectContext:moc];
    [fetch setEntity:entity];
    NSError *error;
    NSArray *result = [moc executeFetchRequest:fetch error:&error];
    if (!result) {
        return nil;
    }
    return result;
}

フェッチ関数を呼び出して- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section、配列カウントを返しています

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{

    return [[self getMenCategoryList] count];
}

最後に、画像をここで collectionView に入力します

- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
     UICollectionViewCell *cell = (UICollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"albumCollectionViewCellCell" forIndexPath:indexPath];



    Photos *objAlbumPhotos = (Photos *)[[self getMenCategoryList] objectAtIndex:indexPath.row];

    UIImage *albumImg = [UIImage imageWithData:[objAlbumPhotos valueForKey:@"photosInAlbum"]];
    UIImageView *photosimageview = (UIImageView *)[cell.contentView viewWithTag:1];
    photosimageview.image = albumImg;



    return cell;
}

どんな助けでも大歓迎です。

4

1 に答える 1