Подтвердить что ты не робот

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

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

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

Значение ключа извлекается следующим образом:

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

Вместо того, чтобы typeId является NSString, это NSDecimalNumber. Почему это?

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

4b9b3361

Ответ 1

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

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

или stringValue:

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

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

NSString* string1 = @"Qaru 123";
NSDecimalNumber* dec;

dec = (NSDecimalNumber *)string1;