Xcode小费计算器开发报错求助:NSDecimalNumber初始化参数不匹配
解决NSDecimalNumber初始化器参数不匹配的问题
嘿,我来帮你搞定这个报错!你遇到的问题是因为NSDecimalNumber在Swift里并没有名为integer:的初始化器参数标签,你用的是Objective-C风格的参数名,但Swift里已经做了调整。
问题原因
原来在Objective-C中我们会用initWithInteger:来初始化NSDecimalNumber,但到了Swift里,这个初始化器的参数标签被改成了integerValue:,所以你写integer:就会触发参数不匹配的错误。
修正方案
有两种简单的修正方式,选哪种都可以:
- 使用正确的Swift风格初始化器参数标签
integerValue::
let sliderValue = NSDecimalNumber(integerValue: Int(customTipPercentSlider.value))
- 或者更简洁地使用
value:参数标签,它可以接受任何符合NSNumberConvertible的类型(包括Int):
let sliderValue = NSDecimalNumber(value: Int(customTipPercentSlider.value))
另外小提醒一下:如果你的滑块值是带小数的(比如UISlider的value默认是Float类型),转成Int的时候会直接截断小数部分,如果需要保留精度的话,可能要考虑转成Double再初始化,比如:
let sliderValue = NSDecimalNumber(value: customTipPercentSlider.value)
这样能保留滑块的精确数值,适合小费百分比这种可能需要小数的场景~
内容的提问来源于stack exchange,提问作者poose81
相关产品推荐
相关产品推荐

