2010-08-20 4 views
1

Je développe une application dans laquelle je prends NSData et le convertis en image et l'affiche dans la vue d'image. Maintenant, je veux enregistrer ces données et l'afficher à nouveau dans UIImageView. Je utilisé NSUserDefaults pour sauver le NSData et encore récupérer ces données et convertir en image et l'afficher dans l'image view.But je ne reçois pas le code back.my d'image est la suivante:Comment convertir nsdata en image?

//for saving nsdata using nsuserdefaults method:- 
NSUserDefaults *defsMVC=[NSUserDefaults standardUserDefaults]; 
[defsMVC setObject:stateMVC forKey:@"MapImageObject"]; 

//for retrieving nsdata from nsuserdefaults and display it in imageview 
NSUserDefaults *defsMVC=[NSUserDefaults standardUserDefaults]; 

NSData *stringmapdata=[defsMVC dataForKey:@"MapImageObject"]; 

UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 6, 320,415)]; 
UIImage *image = [UIImage imageWithData:stringmapdata]; 
[imageView setImage:image]; 
[image release]; 
[self.view addSubview:imageView]; 
[self.view sendSubviewToBack:imageView]; 
[imageView release]; 

Répondre

2

Je ne pense que vous devriez stocker les données dans les préférences de l'utilisateur, essayez de le stocker dans un fichier comme "yourimage.png", alors vous pouvez simplement faire [[NSImage alloc] initWithConentsOfFile: path];

Essayez également d'utiliser NSArchiver avant de l'enregistrer dans les paramètres utilisateur par défaut:

NSImage *image = [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"someKey"]]; 

Et pour l'archiver les valeurs par défaut de l'utilisateur:

[[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:image] forKey:@"someKey"]; 

Gotta love Cocoa =)

+0

NSUnarchiver et NSArchiver sont-ils disponibles sur iOS? –

+0

Oui, /System/Library/Frameworks/Foundation.framework –

0

Mon image est stocké dans la 6ème colonne sous une forme de NSData, d'abord je dois obtenir ces données dans l'objet NSData. Puis convertir ce NSData en image.

data = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 6) 
           length:sqlite3_column_bytes(statement, 6)]; 
img = [UIImage imageWithData:data]; 
imgdata = [[NSMutableArray alloc]initWithObjects:img, nil];