Как преобразовать NSString в NSNumber - PullRequest
560 голосов
/ 19 сентября 2009

Как мне преобразовать NSString, содержащий число любого примитивного типа данных (например, int, float, char, unsigned int и т. Д.)? Проблема в том, что я не знаю, какой тип числа будет содержать строка во время выполнения.

У меня есть идея, как это сделать, но я не уверен, работает ли это с любым типом, а также со значениями без знака и с плавающей точкой:

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

Спасибо за помощь.

Ответы [ 18 ]

2 голосов
/ 29 января 2014

Вы можете просто использовать [string intValue] или [string floatValue] или [string doubleValue] и т. Д.

Вы также можете использовать NSNumberFormatter класс:

2 голосов
/ 27 июля 2012

Как насчет стандарта C atoi?

int num = atoi([scannedNumber cStringUsingEncoding:NSUTF8StringEncoding]);

Как вы думаете, есть какие-то предостережения?

2 голосов
/ 07 июля 2017

вы также можете сделать как этот код 8.3.3 IOS 10.3 поддержка

[NSNumber numberWithInt:[@"put your string here" intValue]]
1 голос
/ 08 августа 2013
NSDecimalNumber *myNumber = [NSDecimalNumber decimalNumberWithString:@"123.45"];
NSLog(@"My Number : %@",myNumber);
0 голосов
/ 02 ноября 2017

Попробуйте это

NSNumber *yourNumber = [NSNumber numberWithLongLong:[yourString longLongValue]];

Примечание. Я использовал longLongValue согласно моему требованию. Вы также можете использовать integerValue, longValue или любой другой формат в зависимости от ваших требований.

0 голосов
/ 23 сентября 2016

Работал в Свифт 3

NSDecimalNumber(string: "Your string") 
0 голосов
/ 12 октября 2017
extension String {

    var numberValue:NSNumber? {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        return formatter.number(from: self)
    }
}

let someFloat = "12.34".numberValue
0 голосов
/ 27 мая 2017

Я знаю, что уже очень поздно, но приведенный ниже код работает для меня.

Попробуйте этот код

NSNumber *number = @([dictionary[@"keyValue"] intValue]]);

Это может вам помочь. Спасибо

...