iOS开发中部分车型模型的km数据无法在UILabel显示的问题排查咨询
问题根源:UI赋值逻辑的低级错误
仔细看你assignmentDataToUI()方法里的这段代码:
if let year = carDetailViewModel.carDetail?.features?.year { yearLabel.text = "\(year)" } else { kmLabel.text = "No Data" // 这里是错误所在! }
为什么只有BMW会出问题?
从你的控制台输出能看到,BMW的year字段是nil,所以代码会进入else分支,错误地把kmLabel的文本设置成了"No Data",直接覆盖了之前已经正确设置的km值。而其他车型的year字段有有效值,不会走到这个else分支,kmLabel的内容就能正常保留。
修复方案
把else分支里的kmLabel改成yearLabel就可以解决问题:
if let year = carDetailViewModel.carDetail?.features?.year { yearLabel.text = "\(year)" } else { yearLabel.text = "No Data" // 修正为yearLabel }
另外,为了避免这类低级错误,建议你用更简洁的可选绑定写法,既紧凑又不容易混淆控件:
// 示例:用map+??的方式统一处理赋值 yearLabel.text = carDetailViewModel.carDetail?.features?.year.map(String.init) ?? "No Data" kmLabel.text = carDetailViewModel.carDetail?.features?.km.map { "\($0)km" } ?? "No Data"
内容的提问来源于stack exchange,提问作者Ufuk Köşker
相关产品推荐
相关产品推荐

