Преобразование 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;