Преобразование NSDecimalNumber в NSString

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

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

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

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

Вместо того, чтобы typeId был NSString, это NSDecimalNumber. Это почему?

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

5 ответов

Решение

Вам нужно использовать stringWithFormat функция:

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

или же stringValue:

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

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

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

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

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

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

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

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

NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

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

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

dec = (NSDecimalNumber *)string1;
Другие вопросы по тегам