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

eMi*_*ich 2 iphone objective-c ios

我正在执行此代码:

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

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

NSLog(@"Converted integer %d",currentNumber);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Converting line number 211 to int...
Converted integer 62549488
Run Code Online (Sandbox Code Playgroud)

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

sid*_*yll 11

"currentNumber"是和object,您尝试使用%d打印.

NSLog(@"Converted integer %d", [currentNumber intValue]);
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以做`NSLog(@"转换整数%@",currentNumber);` (2认同)
  • ExitToShell,这绝对不是真的.除非问题严格要求,否则很少放弃对象的原始类型,或者转换为对象有助于更清晰,更容易地解决问题.原始类型要快得多,通常应尽可能使用. (2认同)

Abi*_*ern 5

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

有可可与方法之间的差异int,并integer在他们的名字.

与个位INTnumberWithIntintValue与交易INT秒.

与个位整数,如numberWithIntegerintegerValue处理NSInteger的秒.

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

只需注意并保持一致.