Xcode报错:Initializer for conditional binding must have Optional type, not ‘String’
Xcode报错:Initializer for conditional binding must have Optional type, not ‘String’

Xcode报错:Initializer for conditional binding must have Optional type, not ‘String’

在转换时间格式时,发现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 {
    // 失败后的代码
}

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注