将NSDecimalNumber转换为NSString

我从一个看起来像这样的对象检索一个键:

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]; 

如果你想获得string值,只需使用“描述”。 它工作正常,即使返回types是NSDecimalNumber,或NSString,或其他:

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

由于这是最高的search结果,我没有看到NSDecimalNumber在Swift中的string的问题,在这里。 这将显示局部小数点分隔符和所有小数位的非零值。

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;