Ответ 1
Вам нужно использовать функцию stringWithFormat
:
NSString *typeId = [NSString stringWithFormat:@"%@", [obj objectForKey:@"TypeID"]];
или stringValue
:
NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];
Я извлекаю ключ из объекта, который выглядит так:
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];
Это должно работать:
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 = @"Qaru 123";
NSDecimalNumber* dec;
dec = (NSDecimalNumber *)string1;