Преобразование NSDecimalNumber в NSString - PullRequest
16 голосов
/ 04 апреля 2010

Я получаю ключ от объекта, который выглядит следующим образом:

po obj
{
  TypeID = 3;
  TypeName = Asset;
}

Значение ключа извлекается так:

NSString *typeId = (NSString*)[obj objectForKey:@"TypeID"];

Вместо того, чтобы typeId был строкой NSString, это NSDecimalNumber. Почему это так?

Как мне преобразовать его в строку NSString?

Ответы [ 5 ]

32 голосов
/ 04 апреля 2010

Вам необходимо использовать функцию stringWithFormat:

NSString *typeId = [NSString stringWithFormat:@"%@", [obj objectForKey:@"TypeID"]];

или stringValue:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];
3 голосов
/ 04 апреля 2010

Это должно работать:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];
1 голос
/ 11 января 2017

Так как это лучший результат поиска, и я не вижу вопроса для NSDecimalNumber для String в Swift, вот он. Это покажет локализованный десятичный разделитель и все десятичные разряды с ненулевым значением.

let string = decimalNumber.description(withLocale: Locale.current)

1 голос
/ 04 мая 2012

Если вы хотите получить строковое значение, просто используйте «описание». Он работает нормально, даже если возвращаемый тип - NSDecimalNumber, или NSString, или любой другой

NSString *typeId = [[obj objectForKey:@"TypeID"] description];
0 голосов
/ 09 апреля 2012

Используйте это для преобразования NSDecimalNumber в NSString:

NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

Используйте это для преобразования NSString в NSDecimalNumber:

NSString* string1 = @"Stack overflow 123";
NSDecimalNumber* dec;

dec = (NSDecimalNumber *)string1;
...