2012-10-24 5 views
18

をintにNSStringのからタイプキャスト私はintNSStringをキャストしていObjective Cのコードのこのビットを持っている:のObjective C -

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

そしてNSLogは、この出力を生成します

b: 18396 

誰も私にこれがなぜ起こっているのか説明できますか?

私はインプレッションタイプの文字列を整数にキャストすると、その文字列から数値を取得していました。

+0

数値を取得する文字列から:http://stackoverflow.com/questions/4663438/objective-c-find-numbers-in-string – janusbalatbat

答えて

31

ここにNSStringオブジェクトへのポインタの整数値があります。文字列を整数に解析するには、実行する必要があります。

int val = [stringObj intValue]; 

またはNSInteger用:

NSInteger val = [stringObj integerValue]; 
5

オブジェクトを整数にキャストすると、メモリアドレスへのポインタが得られます。 [a integerValue]に電話すると、文字列の整数値を取得できます。

NSInteger instate of intを使用する方が良いでしょう。なぜなら、64ビットオペレーティングシステムを使用する場合、NSIntegerは64ビットになるからです。

10

は、数値の使用を取得するには

@([a intValue]); 
0

またはObjective-Cのリテラル構文を持つ:

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

ここでNSNumber *を取得し、NSIntegerは取得しません。 – Cfr