错误问题:无法调用非函数类型“ NSURL”的值

时间:2019-04-28 02:47:10

标签: swift firebase

我有并正在发行 “ 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。

1 个答案:

答案 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 ... })