Swift应用经Alamofire获取MySQL整数数据赋值文本框报Int转String类型错误
编译报错修复方案
报错根源非常清晰:所有文本输入框(UITextField)的text属性只接受String?类型的参数,你当前直接把JSON解析得到的Int类型值赋值给该属性,自然会触发类型不匹配的编译错误。只需要把整数值显式转换成字符串类型,就可以正常完成赋值。
核心代码修改
调整三行触发报错的赋值逻辑,用Swift内置的String初始化方法完成整数到字符串的转换:
- 原报错行:
self.BPMTXT.text = itemDict["Base-Pay-Monthly"].intValue
修改为:self.BPMTXT.text = String(itemDict["Base-Pay-Monthly"].intValue) - 原报错行:
self.OTTXT.text = itemDict["Overtime"].intValue
修改为:self.OTTXT.text = String(itemDict["Overtime"].intValue) - 原报错行:
self.OthersTXT.text = itemDict["Others"].intValue
修改为:self.OthersTXT.text = String(itemDict["Others"].intValue)
现有代码的隐藏问题提醒
- 代码中构建
totalIncome数组时引用了int3、int4、int5三个变量,但循环内并未对这几个变量做取值定义,会触发“使用未定义变量”的编译报错,需要补充对应收入字段的整数解析逻辑。 - Alamofire的网络回调默认在子线程执行,直接在回调里操作UI控件会触发UI更新警告,甚至会出现偶发的控件不刷新问题,需要把所有UI赋值、计算结果更新的逻辑切回主线程执行:
可使用
DispatchQueue.main.async { // 放置所有self.xxx.text赋值、NetPay计算赋值的逻辑 }包裹对应代码块。 - 当前用到的SwiftyJSON的
intValue方法,会在字段不存在、类型不匹配时默认返回0,若需要避免无效零值被误填充到输入框,可改用可选绑定方式做容错处理:示例写法:
if let basePay = itemDict["Base-Pay-Monthly"].int { self.BPMTXT.text = String(basePay) }
内容的提问来源于stack exchange,提问作者Jack_ss
相关产品推荐
相关产品推荐

