2010-12-05 4 views
22

Nach erfolgreich ein Bild aus der iPhone-Kamera auf iOS 4.1, können Sie die TasteWas ist die Klasse NSCFNumber in iOS 4.1?

@"UIImagePickerControllerMediaMetadata" 

zurückzukehren Informationen über das Bild verwenden zu erwerben. Einer der Schlüssel in diesem Wörterbuch ist

@"Orientation" 

Aus meinen Experimenten, Porträt und Kopf ist um 6 bzw. 8 und die Landschaften sind 1 und 3. Schauen Sie sich diesen Code:

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

Der NSLog sagt "Class: NSCFNumber"

Ich muss diesen Wert des Objekts vergleichen, um zu bestimmen, wie es weitergeht. Landscape ist 1 oder 3, Portrait ist 6 oder 8. Ich bin mir nicht sicher, was ich als Orientierung eintippen soll oder was ich darauf ansprechen soll. NSNumber und NSInteger sagen mir immer, dass ich Ganzzahlen aus Zeigern ohne Umwandlungen mache.

Danke für Ihre Zeit!

+0

Ich bin selbst herumgereist und habe nur die -description-Methode zur Orientierung verwendet, um einen NSString zu bekommen, dann -isEqualToString: um meine Entscheidung zu treffen. Aber ich würde immer noch gerne die Antwort wissen =) – Justin

Antwort

35

Dies sagt Ihnen, dass die Orientierung eine Instanz von NSNumber ist. Technisch ist NSCFNumber eine private Unterklasse von NSNumber, aber das ist ein Implementierungsdetail, um das Sie sich keine Sorgen machen müssen. Um den ganzzahligen Wert zu erhalten würden Sie rufen

[orientation integerValue] 
+0

Ist es notwendig, auf NSNumber * typecast? – Josh

+0

Nein, ist es nicht. Ich habe nicht nachgedacht, als ich das eingegeben habe. Ich werde es entfernen, um weitere Verwirrung zu vermeiden. –

+3

Ich hasse es, wenn jemand sagt "es ist Implementierungsdetail". Es ist, als ob jemand die "Barriere" setzt und sagt: "Du kannst nicht weiter gehen", hör auf! Was ist, wenn es Leute gibt, die weiter gehen wollen, wenn das nicht besonders nützlich ist? –

6

NSNumber ist ein Klasse-Cluster. NSCFNumber ist eine konkrete, "private" Implementierung einer Klasse in diesem Cluster. Verwenden Sie einfach den zurückgegebenen Wert wie ein Objekt NSNumber.