16

我正在从如下所示的对象中检索密钥:

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

键值是这样检索的:

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

typeId 不是一个 NSString,而是一个 NSDecimalNumber。这是为什么?

如何将其转换为 NSString?

4

5 回答 5

32

您需要使用以下stringWithFormat功能:

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

stringValue

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];
于 2010-04-04T05:04:42.930 回答
4

这应该有效:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];
于 2010-04-04T05:05:16.407 回答
1

如果要获取字符串值,只需使用“描述”。即使返回的类型是 NSDecimalNumber、NSString 或其他类型,它也能正常工作:

NSString *typeId = [[obj objectForKey:@"TypeID"] description];
于 2012-05-04T04:30:38.793 回答
1

由于这是最热门的搜索结果,而且我在 Swift 中没有看到 NSDecimalNumber 到 String 的问题,所以就在这里。这将显示本地化的小数分隔符和所有非零值的小数位。

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

于 2017-01-11T00:11:08.853 回答
-1

使用它来将 NSDecimalNumber 转换为 NSString:

NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

使用它来将 NSString 转换为 NSDecimalNumber:

NSString* string1 = @"Stack overflow 123";
NSDecimalNumber* dec;

dec = (NSDecimalNumber *)string1;
于 2012-04-09T12:39:08.343 回答