String to NSNumber in Swift

IosSwiftIos8Nsnumber

Ios Problem Overview


I found a method to convert String to NSNumber, but the code is in Objective-C. I have tried converting it to Swift but it is not working.

The code I am using:

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

and in Swift I am using it in this way:

var i = NSNumberFormatter.numberFromString("42")

But this code is not working. What am I doing wrong?

Ios Solutions


Solution 1 - Ios

Swift 3.0

NSNumber(integer:myInteger) has changed to NSNumber(value:myInteger)

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(value:myInteger)
}

Swift 2.0

Use the Int() initialiser like this.

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(integer:myInteger)
    print(myNumber)
} else {
    print("'\(someString)' did not convert to an Int")
}

This can be done in one line if you already know the string will convert perfectly or you just don't care.

let myNumber = Int("42222222222")!

Swift 1.0

Use the toInt() method.

let someString = "42222222222"
if let myInteger = someString.toInt() {
    let myNumber = NSNumber(integer:myInteger)
    println(myNumber)
} else {
    println("'\(someString)' did not convert to an Int")
}

Solution 2 - Ios

Or do it just in one line:

NSNumberFormatter().numberFromString("55")!.decimalValue

Solution 3 - Ios

Swift 2

Try this:

var num = NSNumber(int: Int32("22")!)

Swift 3.x

 NSNumber(value: Int32("22")!)

Solution 4 - Ios

In latest Swift:

let number = NumberFormatter().number(from: "1234")

Solution 5 - Ios

You can use the following code if you must use NSNumberFormatter. It's simpler to use Wezly's method.

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle;
if let number = formatter.numberFromString("42") {
    println(number)
}

Solution 6 - Ios

I do use extension in swift 3/4 and it's cool.

extension String {
    var numberValue: NSNumber? {
        if let value = Int(self) {
            return NSNumber(value: value)
        }
        return nil
    }
}

and then just use following code:

stringVariable.numberValue

What is cool is that you don't need a chain of if statements to unwrap the optional values. For instance,

if let _ = stringVariable, let intValue = Int(stringVariable!) {
    doSomething(NSNumber.init(value: intValue))
}

can be replaced by:

doSomething(stringVariable?.numberValue)

Solution 7 - Ios

Swift 5

let myInt = NumberFormatter().number(from: "42")

Solution 8 - Ios

("23" as NSString).integerValue ("23.5" as NSString).doubleValue

and so on .

Solution 9 - Ios

> Try Once

let myString = "123"
let myInt = NSNumber(value: Int(myString) ?? 0)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2413621View Question on Stackoverflow
Solution 1 - IosWezView Answer on Stackoverflow
Solution 2 - IospolarwareView Answer on Stackoverflow
Solution 3 - IosVikram BiwalView Answer on Stackoverflow
Solution 4 - IosHemangView Answer on Stackoverflow
Solution 5 - IosrakeshbsView Answer on Stackoverflow
Solution 6 - IosPeiView Answer on Stackoverflow
Solution 7 - IosManishView Answer on Stackoverflow
Solution 8 - IosAhmed SamirView Answer on Stackoverflow
Solution 9 - IosRameshiosView Answer on Stackoverflow