在转换时间格式时,发现if条件语句报错:
// 转换时间
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let lastDateString = forexData.data.lastDate, // 报错行
let convertDate = dateFormatter.date(from: lastDateString) {
// 成功后的代码
} else {
// 失败后的代码
}
报错内容为:
Initializer for conditional binding must have Optional type, not 'String'
报错的原因为:
forexData.data.lastDate
这个字段不是一个可选类型,因此在If let 语句中绑定失败了。
在if let语句中,条件绑定要求右边的值是可选类型,否则就无法进行安全解包。因此右侧是非可选类型的字符串,因此直接使用条件绑定就会导致这个错误。
解决方案为:
// 转换时间
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let lastDateString = forexData.data.lastDate
if let convertDate = dateFormatter.date(from: lastDateString) {
// 成功后的代码
} else {
// 失败后的代码
}