2012-10-24 13 views
18
Int

Ich habe dieses Stück Objective-C-Code, wo ich ein NSString auf ein int am Casting:Objective C - Typ Von NSString Casting

NSString *[email protected]"123abc"; 
NSInteger b=(int) a; 
NSLog(@"b: %d",b); 

Und die NSLog erzeugt diese Ausgabe:

b: 18396 

Kann mir jemand erklären, warum das passiert?

Ich war unter dem Impression-Typ Casting einer Zeichenfolge in eine ganze Zahl würde den numerischen Wert aus der Zeichenfolge erhalten.

+0

zum Abrufen von numerischen Werten from string: http://stackoverflow.com/questions/4663438/objective-c-find-numbers-in-string – janusbalatbat

Antwort

31

Sie haben Integer-Wert des Zeigers auf NSString Objekt dort. Zu analysieren String in Integer sollten Sie tun:

NSString *a = @"123abc"; 
NSInteger b = [a integerValue]; 
5

Wenn Sie ein Objekt in eine Ganzzahl umwandeln, erhalten Sie den Zeiger auf die Speicheradresse. Sie können [a integerValue] aufrufen, um den ganzzahligen Wert der Zeichenfolge abzurufen.

Auch beim Gießen ist es besser zu verwenden NSInteger Instate int. Denn bei Verwendung eines 64-Bit-Betriebssystems wird NSInteger 64 Bit sein.

10

Um den Zahlenwert Verwendung zu erhalten:

int val = [stringObj intValue]; 

oder für NSInteger:

NSInteger val = [stringObj integerValue]; 
0

Oder mit Objective-C-Literalen Syntax:

@([a intValue]); 
+0

Sie erhalten NSNumber * hier, nicht NSInteger – Cfr