objective-c - 如何将 NSString 转换为 NSNumber

如何转换包含许多原始数据类型的 NSString(例如 intfloatcharunsigned int 等)?问题是,我不知道字符串在运行时会包含哪种数字类型。

我有一个想法,但我不确定这是否适用于任何类型,也适用于无符号和浮点值:

long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber]; 
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];

感谢您的帮助。

最佳答案

使用 NSNumberFormatter:

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42"];

如果字符串不是有效数字,则 myNumber 将为 nil。如果它是一个有效的数字,那么您现在拥有所有 NSNumber 的优点来确定它实际上是什么类型的数字。

https://stackoverflow.com/questions/1448804/

相关文章:

ios - 在 ARC 下,IBOutlets 应该强还是弱?

ios - 如何以编程方式在 iPhone 上发送短信?

ios - NS前缀是什么意思?

ios - 如何浏览文本字段(下一步/完成按钮)

ios - UITextField 文本更改事件

objective-c - 在 Objective-C 中,我如何测试对象类型?

ios - UITableViewCell,在滑动时显示删除按钮

objective-c - 在 Objective-C 中创建一个抽象类

objective-c - @synthesize 与 @dynamic,有什么区别?

ios - 如何以编程方式创建基本的 UIButton?