将NSDecimalNumber转换为NSString

16

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

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

键值是通过以下方式检索的:

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

为什么typeId不是NSString,而是NSDecimalNumber?

我该如何将其转换为NSString?

5个回答

32
您需要使用stringWithFormat函数:
NSString *typeId = [NSString stringWithFormat:@"%@", [obj objectForKey:@"TypeID"]];

或者stringValue

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

4
这应该可以运行:
NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];

1
如果要获取字符串值,只需使用“description”。即使返回类型是NSDecimalNumber、NSString或其他类型,它也能正常工作:
NSString *typeId = [[obj objectForKey:@"TypeID"] description];

1

由于这是顶部搜索结果,我没有看到Swift中关于NSDecimalNumber转换为字符串的问题,所以在这里提供一下。这将显示本地化的小数分隔符和所有具有非零值的小数位。

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


-1
使用此代码将NSDecimalNumber转换为NSString:
NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

使用以下代码将NSString转换为NSDecimalNumber:
NSString* string1 = @"Stack overflow 123";
NSDecimalNumber* dec;

dec = (NSDecimalNumber *)string1;

2
你不能直接将 NSString 强制转换为 NSDecimalNumber,它们是不同的类型,如果你尝试在该指针上使用 NSDecimalNumber 方法,程序会崩溃。 - axiixc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接