如何修复条件绑定的初始化程序必须具有可选类型,而不是“字符串”? [复制]
Posted
技术标签:
【中文标题】如何修复条件绑定的初始化程序必须具有可选类型,而不是“字符串”? [复制]【英文标题】:How to fix Initializer for conditional binding must have Optional type, not 'String'? [duplicate] 【发布时间】:2019-03-29 14:28:24 【问题描述】:我该如何解决这个问题? 条件绑定的初始化程序必须具有 Optional 类型,而不是 'String'
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
cell.lblNamnEfternamn.text = personsArray[indexPath.row].wholeName
cell.lblEmail.text = personsArray[indexPath.row].email
cell.imageAvatar.image = UIImage(named: "avatar")
if let newProfileImageUrl = personsArray[indexPath.row].profileImageUrl
let url = NSURL(string: newProfileImageUrl)
let request = URLRequest(url: url! as URL)
let task = URLSession.shared.dataTask(with: request as URLRequest) (data, response, error) in
if error != nil
print(error!)
return
DispatchQueue.main.async
cell.imageAvatar.image = UIImage(data: data!)
tableView.reloadData()
return cell
【问题讨论】:
在您当前的方法中,您可能还需要task.resume()
你只能使用 if let 来解开一个可选项。该错误表明 profileImageUrl 不是可选的。所以你不必使用 if let。
您可以将 profileImageUrl 声明为字符串吗?而不是字符串。
【参考方案1】:
替换这个
if let newProfileImageUrl = personsArray[indexPath.row].profileImageUrl
与
let newProfileImageUrl = personsArray[indexPath.row].profileImageUrl
另外最好使用SDWebImage
cell.imageAvatar.sd_setImage(with: URL(string:newProfileImageUrl), placeholderImage: UIImage(named: "placeholder.png"))
而不是每次滚动都重复获取图像
【讨论】:
没有帮助显示更多错误 去掉if let
的结尾
以上是关于如何修复条件绑定的初始化程序必须具有可选类型,而不是“字符串”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
条件绑定:if let error - 条件绑定的初始化程序必须具有可选类型
条件绑定:if let error - 条件绑定的初始化程序必须具有可选类型
ios:条件绑定的初始化程序必须具有可选类型,而不是“LOTAnimationView”
条件绑定的初始化程序必须具有可选类型,而不是 '[NSObject: AnyObject]' SwiftyJSON [重复]