2

値を持つNSMutableDictionaryがあります。値の1つはNSString"1"です。

私はそれを次のように取得します:

NSString *currentCount = [perLetterCount valueForKey:firstLetter];

次に、それをintに変換します。

int newInt = (int)currentCount;

そして、私はこのように両方を表示します:

NSLog(@"s: %@, i: %i", currentCount, newInt);

結果としてこれが得られます:

 c: 1, i: 156112

私は何を間違っているのですか?

ありがとうございました

4

3 に答える 3

7

あなたがしていることは、ポインター (文字列オブジェクト currentCount のデータが格納されているアドレス) を整数に変換することです。そして、整数は 156112 のようです。

NSString の数値を取得するには、値メソッドのいずれかを呼び出す必要があります。

[ currentCount intValue ]  or currentCount.intValue // for an int;
[ currentCount integerValue ] or currentCount.integerValue // for an NSInteger;
[ currentCount floatValue ] or currentCount.floatValue // for a float, and so on.
于 2012-04-11T23:34:52.510 に答える
5

int newInt = currentCount.intValue代わりに試してください。

于 2012-04-11T23:28:04.417 に答える
2

上記のように、次を使用できます。

int newInt = [currentCount intValue];

ただし、文字列に数値が含まれていない場合は、ゼロが返されます。ゼロが文字列内の有効な数値であり、文字列に数値がないことも有効な場合、これは困難です。

文字列に int が含まれていないことが有効な場合に、文字列から int を取得する方法は次のとおりです。

NSScanner *scanner = [NSScanner scannerWithString:currentCount];

int newInt;
if (![scanner scanInt:&newInt]) {
    NSLog(@"Did not find integer in string:%@", currentCount);
}
于 2012-04-11T23:42:20.573 に答える