NSString到NSNumber:我在这里做错了什么?

时间:2011-01-09 22:35:08

标签: iphone objective-c ios

我正在执行此代码:

NSLog(@"Converting line number %@ to int...",currentValue);

NSNumber * currentNumber = [NSNumber numberWithInt:[currentValue integerValue]];

NSLog(@"Converted integer %d",currentNumber);

哪个输出:

Converting line number 211 to int...
Converted integer 62549488

我在这里做错了什么?在这种情况下,currentValue是一个值为211的NSMutableString。

3 个答案:

答案 0 :(得分:11)

“currentNumber”是和您尝试使用%d打印的对象。

NSLog(@"Converted integer %d", [currentNumber intValue]);

答案 1 :(得分:5)

虽然您的问题已经得到解答,但您的代码还有其他问题。

Cocoa方法与名称中的intinteger存在差异。

int ,例如numberWithIntintValue处理 int

整数(例如numberWithIntegerintegerValue处理 NSInteger 的。

编程32/64位程序时,这可能是错误和不一致的来源。

只需注意并保持一致。

答案 2 :(得分:2)

NSNumber是继承的NSObject类。它不是Integer.So你可以使用“%@”而不是%d。

您可以按如下方式更改NSLog行,

NSLog(@"Converted integer %@",currentNumber);