2009-08-09 8 views
3

J'ai un petit dilemme avec un projet iphone.Problème de conversion d'un tableau d'octets sur l'iphone

Je reçois des données JSON d'un webservice. Je peux le désérialiser dans un dictionnaire OK. Une des valeurs du dictionnaire est un binaire (une image), mais ma bibliothèque JSON la désérialise comme un NSArray de NSDecimalNumbers! Comment puis-je convertir ce NSArray de NSDecimalNumbers en un objet NSData, afin que je puisse générer une image avec succès, en utilisant [UIImage imageWithData: myNSData]?

Répondre

3

Que diriez-vous de cette

unsigned char *buffer = (unsigned char*)malloc([arrayOfNumbers count]); 
int i=0; 
for (NSDecimalNumber *num in arrayOfNumbers) { 
    buffer[i++] = [num intValue]; 
} 
NSData *data = [NSData dataWithBytes:buffer length:[arrayOfNumbers count]]; 
free(buffer); 

... ou quelque chose de similaire selon les valeurs des gammes NSDecimalNumbers.

+0

Vous pouvez réduire la consommation de mémoire et une copie de tampon en utilisant '[NSMutableData dataWithLength: [arrayOfNumbers count]];' pour allouer le tampon au lieu de malloc. –

+0

Brillant, a travaillé comme un charme! =] Été un moment depuis que j'ai fait C brut, donc je suppose que ma syntaxe était éteinte. –

+0

+1 Merci beaucoup. J'ai lutté avec cela pendant des jours. – simonbs

Questions connexes