Проблема с ошибкой: невозможно вызвать значение нефункционального типа 'NSURL' - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть и проблема на линии '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!)
            }

Это должно позволить мне установить уникальный профильPic для каждого пользователя.

1 Ответ

0 голосов
/ 28 апреля 2019

Прежде всего, не используйте NSURL, иначе вы получите другую ( Неоднозначная ссылка ) ошибку.

Ошибка возникает потому, что для синтаксиса трейлинг-замыкание закрывающая скобка после 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 ... })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...