2009-08-09 4 views
3

Ich habe ein kleines Dilemma mit einem iPhone-Projekt.Problem beim Konvertieren eines Byte-Arrays auf dem iPhone

Ich erhalte einige JSON-Daten von einem Webservice. Ich kann es in ein Wörterbuch deserialisieren, OK. Einer der Wörterbuchwerte ist eine Binärdatei (ein Bild), aber meine JSON-Bibliothek deserialisiert sie als NSArray von NSDecimalNumbers!

Wie konvertiere ich dieses NSArray von NSDecimalNumbers in ein NSData-Objekt, so dass ich erfolgreich ein Bild daraus erzeugen kann, indem ich [UIImage imageWithData: myNSData] verwende?

Antwort

3

Wie über diesen

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); 

... oder etwas ähnliches, die Werte Bereiche des NSDecimalNumbers abhängig.

+0

Sie können den Speicherverbrauch und eine Pufferkopie reduzieren, indem Sie '[NSMutableData dataWithLength: [arrayOfNumbers count]];' verwenden, um den Puffer anstelle von malloc zuzuweisen. –

+0

Brilliant, arbeitete wie ein Charme! =] Eine Weile her, seit ich rohen C gemacht habe, also meine Syntax war aus. –

+0

+1 Vielen Dank. Ich kämpfe seit Tagen damit. – simonbs