iPhone: Descargar image y mostrar en UIImageView con la extensión @ 2x

Estoy intentando download una image de NSURL imageURL y mostrarla en un UIImageView con densidad de píxeles de retina agregando @ 2x; Esto se mostrará en un iPhone 4 o posterior. He usado algún código desde aquí: ¿Cómo descargo y guardo un file localmente en iOS usando el objective C?

No muestra nada en imageView cuando lo inicio, y la última línea NSLog imprime algunas dimensiones muy pequeñas para la image, lo que sugiere que realmente no descargó una. ¿Qué hay de malo con mi código además de tener una comprobación de errores realmente mala?

- (void) presentImage: (NSURL*) imageURL{ NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; NSLog([imageURL description]); if ( imageData ) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"0@2x.png"]; [imageData writeToFile:filePath atomically:YES]; } else NSLog(@"Error when loading image!!!"); imageData = [NSData dataWithContentsOfFile:@"0@2x.png"]; UIImage *image = [[UIImage alloc] initWithData: imageData]; NSLog(@"%f1 x %f2", image.size.width, image.size.height); [self.imageView setImage: image]; 

}

EDITAR: OK, arreglé eso. Me siento estupido. Se suponía que debía poner

 imageData = [NSData dataWithContentsOfFile:@filePath]; 

y poner filePath en el scope en lugar de solo poner @ "0@2x.png".

Estás complicando el problema, creo. Use este método:

 + (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale 

Y establezca la escala en 2.0 cuando tenga una image retina.

 -(void)presentImage:(NSURL*)imageURL { NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; UIImage *image = [UIImage imageWithData:imageData scale:2.0]; [self.imageView setImage: image]; }