我正在从如下所示的对象中检索密钥:
po obj
{
TypeID = 3;
TypeName = Asset;
}
键值是这样检索的:
NSString *typeId = (NSString*)[obj objectForKey:@"TypeID"];
typeId 不是一个 NSString,而是一个 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];
如果要获取字符串值,只需使用“描述”。即使返回的类型是 NSDecimalNumber、NSString 或其他类型,它也能正常工作:
NSString *typeId = [[obj objectForKey:@"TypeID"] description];
由于这是最热门的搜索结果,而且我在 Swift 中没有看到 NSDecimalNumber 到 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;