0

Я использую Core Data, чтобы сохранить UIImage, который я получаю от своего UIImagePickerController (исходный тип = библиотека изображений). Затем я размещаю или скорее хочу поместить фотографию в UICollectionViewCell. Пожалуйста, помогите и проверьте, что я делаю неправильно.Извлечение UIImage из данных ядра

Это мой UIImagePickerController, он называется делегатом.

-(void)requestAddScreen { 
_picker = [[UIImagePickerController alloc] init]; 
_picker.delegate = self; 
_picker.allowsEditing = NO; 
_picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
[self presentViewController:_picker animated:YES completion:nil]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 
{ 

AppDelegate *delegate = [UIApplication sharedApplication].delegate; 
NSManagedObjectContext *context = [delegate managedObjectContext]; 
NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Screen" inManagedObjectContext:context]; 

Screen* newScreen = [[Screen alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:context]; 
NSData *imageData = UIImagePNGRepresentation(image); 
newScreen.image = imageData; 
[_project addProjectScreensObject:newScreen]; 

NSError *error; 
[context save:&error]; 



if (![context save:&error]) { 
    NSLog(@"Whoops %@ %@", error, [error localizedDescription]); 
} 


[self dismissViewControllerAnimated:_picker completion:^{ 
[_collectionView reloadData]; 
}]; 
} 

И вот мой взгляд на ViewWillAppear. это где я извлекаю данные из Core Data, id it Correct?

- (void)viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:nil]; 
AppDelegate *delegate = [UIApplication sharedApplication].delegate; 
NSManagedObjectContext *context = [delegate managedObjectContext]; 

//load project 
NSFetchRequest *fetch = [[NSFetchRequest alloc]init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:context]; 
[fetch setEntity:entity]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", @"EMO-KIT"]; 
[fetch setPredicate:predicate]; 
NSError *error; 
NSArray *array = [context executeFetchRequest:fetch error:&error]; 
if (array.count == 1) { 
    _project = array[0]; 
} else { 
    _project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:context]; 
    [_project setValue:@"EMO-KIT" forKey:@"name"]; 
} 
NSArray* screens = [[_project projectScreens] array]; 
NSIndexPath *bottomIndexPath=[NSIndexPath indexPathForRow:screens.count inSection:0]; 
[self.collectionView scrollToItemAtIndexPath: bottomIndexPath atScrollPosition:UICollectionViewScrollPositionRight animated:YES]; 

} 
+1

Вы может хранить изображение в каталоге и s разорвали путь в кордедатах. – souvickcse

+0

* «Пожалуйста, помогите и проверьте, что я делаю неправильно». * Какие у вас проблемы, с которыми вам нужна помощь? –

+0

Ну, я хочу знать, будет ли кодирование im делать успешное сохранение изображения, которое выбирает мой UIImagePicker. – 000

ответ

2

Вы можете преобразовать UIImage в NSData и сохранить в Core Data, как показано ниже

Сохранения

NSData * imageData = UIImagePNGRepresentation(image); 
[newsObj setValue:imageData forKey:@"Image"]; 

Получения

UIImage *image = [UIImage imageWithData:[screenObj valueForKey:@"Image"]]; 

Надеется, что это помогает ..

+0

спасибо, мне очень помогли. – 000

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