You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode小费计算器开发报错求助:NSDecimalNumber初始化参数不匹配

解决NSDecimalNumber初始化器参数不匹配的问题

嘿,我来帮你搞定这个报错!你遇到的问题是因为NSDecimalNumber在Swift里并没有名为integer:的初始化器参数标签,你用的是Objective-C风格的参数名,但Swift里已经做了调整。

问题原因

原来在Objective-C中我们会用initWithInteger:来初始化NSDecimalNumber,但到了Swift里,这个初始化器的参数标签被改成了integerValue:,所以你写integer:就会触发参数不匹配的错误。

修正方案

有两种简单的修正方式,选哪种都可以:

  1. 使用正确的Swift风格初始化器参数标签integerValue::
let sliderValue = NSDecimalNumber(integerValue: Int(customTipPercentSlider.value))
  1. 或者更简洁地使用value:参数标签,它可以接受任何符合NSNumberConvertible的类型(包括Int):
let sliderValue = NSDecimalNumber(value: Int(customTipPercentSlider.value))

另外小提醒一下:如果你的滑块值是带小数的(比如UISlider的value默认是Float类型),转成Int的时候会直接截断小数部分,如果需要保留精度的话,可能要考虑转成Double再初始化,比如:

let sliderValue = NSDecimalNumber(value: customTipPercentSlider.value)

这样能保留滑块的精确数值,适合小费百分比这种可能需要小数的场景~

内容的提问来源于stack exchange,提问作者poose81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:12:45