我有并正在发行 “ URLSession.shared.dataTask(带有:url!{(数据,响应,错误)在”
错误代码:无法调用非函数类型'NSURL'的值
我环顾四周,尝试了不同的方法,即使将url设置为URL类型而不是NSURL,它仍然给我一个错误。如果有人可以帮助,那就太好了!代码如下:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: cellID)
let user = users[indexPath.row]
cell.textLabel?.text = user.name
cell.detailTextLabel?.text = user.email
//cell.imageView?.image = UIImage(named: "defaultpropic")
cell.imageView?.layer.cornerRadius = 30
cell.imageView?.layer.masksToBounds = true
if let profileImageUrl = user.profileImageURL
{
let url = NSURL(string: profileImageUrl)
URLSession.shared.dataTask(with: url! { (data, response, error) in
//download hit error
if error != nil
{
print(error)
return
}
DispatchQueue.main.async
{
cell.imageView?.image = UIImage(data: data!)
}
}).resume()
}
return cell
}
以下失败区域:
if let profileImageUrl = user.profileImageURL
{
let url = NSURL(string: profileImageUrl)
URLSession.shared.dataTask(with: url! { (data, response, error) in //<- Error Here
//download hit error
if error != nil
{
print(error)
return
}
DispatchQueue.main.async
{
cell.imageView?.image = UIImage(data: data!)
}
它应该允许我为每个用户设置一个唯一的profilePic。
答案 0 :(得分:0)
首先不要使用NSURL
,否则会出现另一个(歧义引用)错误。
发生错误是因为对于 trailing闭包语法,url!
之后缺少右括号
let url = URL(string: profileImageUrl)
URLSession.shared.dataTask(with: url!) { (data, response, error) in ... }
您可以将右括号放在表达式的末尾,但随后必须添加completionHandler
参数标签
let url = URL(string: profileImageUrl)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in ... })