Objective-C
(Примечание: этот метод не подходит для разных локалей, но немного быстрее, чем NSNumberFormatter
)
NSNumber *num1 = @([@"42" intValue]);
NSNumber *num2 = @([@"42.42" floatValue]);
Swift
Простой, но грязный способ
// Swift 1.2
if let intValue = "42".toInt() {
let number1 = NSNumber(integer:intValue)
}
// Swift 2.0
let number2 = Int("42')
// Swift 3.0
NSDecimalNumber(string: "42.42")
// Using NSNumber
let number3 = NSNumber(float:("42.42" as NSString).floatValue)
Удлинитель
Это лучше, на самом деле, потому что он будет хорошо играть с локалями и десятичными числами.
extension String {
var numberValue:NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter.number(from: self)
}
}
Теперь вы можете просто сделать:
let someFloat = "42.42".numberValue
let someInt = "42".numberValue