2

我有一个带有值的 NSMutableDictionary。其中一个值是 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];

但是,如果字符串不包含数字,则返回零。如果零是字符串中的有效数字并且字符串没有数字也是有效的,这将很困难。

当字符串不包含一个有效时,从字符串中获取整数的方法是:

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 回答