【问题标题】:Converting NSDecimalNumber to NSString将 NSDecimalNumber 转换为 NSString
【发布时间】:2011-02-04 03:23:44
【问题描述】:

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

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

键值是这样检索的:

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

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

如何将其转换为 NSString?

【问题讨论】:

    标签: objective-c ios cocoa-touch nsstring nsdecimalnumber


    【解决方案1】:

    你需要使用stringWithFormat函数:

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

    或stringValue:

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

    【讨论】:

      【解决方案2】:

      这应该可行:

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

      【讨论】:

        【解决方案3】:

        使用它来将 NSDecimalNumber 转换为 NSString:

        NSDecimalNumber* dec1;
        NSString* str;
        
        str = dec1.stringValue;
        

        使用它来将 NSString 转换为 NSDecimalNumber:

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

        【讨论】:

        • 您不能只将NSString 转换为NSDecimalNumber,它们是不同的类型,如果您尝试在该指针上使用NSDecimalNumber 方法,您会崩溃。
        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-30
            相关资源
            最近更新 更多