Program Tip

신속한 NSNumber에 대한 문자열

programtip 2020. 12. 6. 21:59
반응형

신속한 NSNumber에 대한 문자열


문자열을 NSNumber로 변환하는 방법을 찾았지만 코드는 Objective-C에 있습니다. 나는 그것을 신속하게 변환하려고 시도했지만 작동하지 않습니다.

내가 사용하는 코드

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

그리고 신속하게 나는 이것을 이런 식으로 사용하고 있습니다.

var i = NSNumberFormatter.numberFromString("42")

그러나이 코드가 작동하지 않습니다. 내가 뭘 잘못하고 있습니까?

미리 감사드립니다


스위프트 3.0

NSNumber(integer:myInteger) 변경되었습니다 NSNumber(value:myInteger)

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

스위프트 2.0

Int()이와 같은 이니셜 라이저를 사용하십시오 .

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

문자열이 완벽하게 변환된다는 것을 이미 알고 있거나 신경 쓰지 않는 경우 한 줄로 수행 할 수 있습니다.

let myNumber = Int("42222222222")!

스위프트 1.0

toInt()방법을 사용하십시오 .

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

또는 한 줄로만 수행하십시오.

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

스위프트 2

이 시도:

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

스위프트 3.x

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

을 사용해야하는 경우 다음 코드를 사용할 수 있습니다 NSNumberFormatter. Wezly의 방법을 사용하는 것이 더 간단합니다.

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

나는 빠른 3/4에서 확장을 사용하고 멋지다.

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

그런 다음 다음 코드를 사용하십시오.

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)

In latest Swift:

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

Try Once

let myString = "123"
let myInt = (myString as NSString).integerValue

참고URL : https://stackoverflow.com/questions/28605703/string-to-nsnumber-in-swift

반응형