objective-c - round - swift money type




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

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

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

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

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

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

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


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

NSString *typeId = [NSString stringWithFormat:@"%@", [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)


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

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




nsdecimalnumber