2012-04-25 3 views
6

Jestem nowicjuszem związanym z podstawowymi danymi. Czy ktoś może mi pomóc, aby zapewnić odpowiednie kroki/samouczek pokazujący, jak zapisać obrazy do podstawowych danych i ich odzyskanie również. Jestem już w stanie przechowywać dane ciąg, ale moja aplikacja ulega awarii, gdy próbuje zapisać obraz. Do zapisywania:Zapisywanie obrazu na rdzeń Data

DataEvent *event = (DataEvent *)[NSEntityDescription insertNewObjectForEntityForName:@"DataEvent" 
                  inManagedObjectContext:managedObjectContext]; 
NSURL *url2 = [NSURL URLWithString:@"xxxxxxxxxxxxxxx SOME URL xxxxxxxxxxxx"]; 

NSData *data = [[NSData alloc] initWithContentsOfURL:url2]; 
imageSave=[[UIImage alloc]initWithData:data]; 
NSData * imageData = UIImageJPEGRepresentation(imageSave, 100.0);  
[event setValue:self.imageSave forKey:@"pictureData"]; 

Dla retrival:

DataEvent *event = (DataEvent *)[eventsArray objectAtIndex:indexPath.row]; 
UIImage *image = [UIImage imageWithData:[event valueForKey:@"pictureData"]]; 
UIImageView *imageViewMainBackGround = [[UIImageView alloc] 
CGRect rect3=CGRectMake(0,2,100.0,100.0); 
imageViewMainBackGround.frame = rect3; 
[cell.contentView addSubview:imageViewMainBackGround]; 
[imageViewMainBackGround release]; 
+0

Co to jest typ danych dla "pictureData" w pliku modelu? –

+0

binarny Typ danych –

+0

"Model używany do otwarcia sklepu jest niezgodny z tym, który był używany do utworzenia sklepu", skąd bierze się ten błąd? –

Odpowiedz

0

Musisz ustawić pictureData wartość zarządzanego obiektu do obiektu NSData (w przypadku imageData), a nie imageSave obiekt, który jest UIImage.

1

Nie zmieniać rozdzielczość, jeśli nie jest to konieczne ..

NSData * imageData = UIImageJPEGRepresentation(imageSave, 0.0); 

// i zmienić po linii

[event setValue:imageData forKey:@"pictureData"]; 

See the store and Retrieve image from core data tutorial with sample code.

Nadzieja, to pomoże ..

+0

Cześć po wykonaniu tego, otrzymuję komunikat o błędzie: reason = "Model używany do otwarcia sklepu jest niezgodny z tym, który został użyty do utworzenia sklepu"; –

+0

gdzie w zapisywaniu lub odzyskiwaniu ..? – Nit

+0

w Zapisywanie danych obrazu –

2

error: reason = "The model used to open the store is incompatible with the one used to create the store"

rozwiązanie:

Usuń projekt budowy z symulatora i wyczyść z zakładki Produkt, teraz uruchom projekt.

9

Aby zapisać:

NSData *imageData = UIImagePNGRepresentation(myUIImage); 

[newManagedObject setValue:imageData forKey:@"imageKey"]; 

I przy sprowadzaniu Image:

NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"imageKey"]]; 
[[newCustomer yourImageView] setImage:image]; 

zmienionego formatu