Convierta NSData [UIImage] en un NSString
Pregunta
Soy consciente de que esta pregunta se ha hecho varias veces, pero no pude encontrar una respuesta definitiva que se adaptara mejor a mi situación.
Quiero la posibilidad de que el usuario seleccione una imagen de la biblioteca y luego esa imagen se convierta a un tipo NSData. Luego tengo el requisito de llamar a un servicio web .NET C # a través de HTTP get, así que idealmente necesito que la cadena resultante esté codificada en UTF8.
Esto es lo que tengo hasta ahora:
NSData *dataObj = UIImageJPEGRepresentation(selectedImage, 1.0);
[picker dismissModalViewControllerAnimated:YES];
NSString *content = [[NSString alloc] initWithData:dataObj encoding:NSUTF8StringEncoding];
NSLog(@"%@", content);
La instrucción NSLog simplemente produce resultados como:
2009-11-29 14:13:33.937 TestUpload2[5735:207] (null)
Obviamente, esto no es lo que esperaba lograr, por lo que cualquier ayuda sería genial.
Saludos cordiales
Solución
No puede crear una cadena codificada UTF-8 a partir de cualquier información binaria arbitraria: los datos deben estar codificados en UTF-8, y los datos de su imagen JPEG obviamente no lo son. Sus datos binarios no representan una cadena, por lo que no puede crear directamente una cadena a partir de ella - - [NSString initWithData: encoding:]
falla apropiadamente en su caso.
Suponiendo que está usando NSURLConnection (aunque una declaración similar debería ser cierta para otros métodos), construirá su NSMutableURLRequest y usará -setHTTPBody:
al cual necesita pasar un objeto NSData. No entiendo por qué usaría un método GET aquí, ya que parece que va a cargar estos datos de imagen en su servicio web; debería usar POST.