2010-12-05 12 views
22

Después de la adquisición con éxito una imagen de la cámara del iPhone en iOS 4.1, puede utilizar la tecla¿Cuál es la clase NSCFNumber en iOS 4.1?

@"UIImagePickerControllerMediaMetadata" 

para devolver información sobre la imagen. Una de las claves en ese diccionario es

@"Orientation" 

Desde mi experimentación, Retrato y Al revés son 6 y 8, respectivamente, y los paisajes son 1 y 3. Mira este código:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSDictionary *metaData = [info objectForKey:@"UIImagePickerControllerMediaMetadata"]; 
    id orientation = [metaData objectForKey:@"Orientation"]; 
    NSLog(@"Class: %@",[orientation class]); 

El NSLog dice "Clase: NSCFNumber"

Necesito comparar el valor de este objeto para determinar cómo proceder. El paisaje es 1 o 3, el retrato es 6 u 8. No estoy seguro de qué escribir la orientación ni cómo llamarla. NSNumber y NSInteger siempre me dicen que estoy haciendo enteros a partir de punteros sin moldes.

¡Gracias por su tiempo!

+0

Me di la vuelta y usé el método -description en la orientación para obtener un NSString, luego usé -isEqualToString: para hacer mi determinación. Pero aún me gustaría saber la respuesta =) – Justin

Respuesta

35

Esto le indica que la orientación es una instancia de NSNumber. Técnicamente, NSCFNumber es una subclase privada de NSNumber, pero es un detalle de implementación del que no tiene que preocuparse. Para obtener el valor entero que le llame

[orientation integerValue] 
+0

¿Es necesario encasillar a NSNumber *? – Josh

+0

No, no lo es. No estaba pensando cuando escribí eso. Lo eliminaré para evitar una mayor confusión. –

+3

Odio cuando alguien dice "es detalles de implementación". Es como si alguien pusiera la "barrera" y dijera "No puedes ir más lejos". ¡Detente! ¿Qué pasa si hay personas que quieren ir más lejos, evento si esto no es particularmente útil? –

6

NSNumber es un grupo clase. NSCFNumber es una implementación concreta, "privada" de una clase en ese clúster. Simplemente use el valor devuelto como lo haría con un objeto NSNumber.

Cuestiones relacionadas