Нет точных совпадений в сообщении об ошибке вызова метода экземпляра в Swift - PullRequest
5 голосов
/ 29 мая 2020

Я никогда раньше этого не понимал. Что означает это сообщение об ошибке в Swift:

No exact matches in call to instance method 'dataTask(with:completionHandler:)'

Вот мой блок кода:

var request: NSMutableURLRequest? = nil
let task = URLSession.shared.dataTask(
            with: request,
            completionHandler: { data, response, error in
                DispatchQueue.main.async(execute: {
                  /// ...
                })
            })
        task.resume()

Ответы [ 2 ]

4 голосов
/ 29 мая 2020

Может быть, текст сообщения кажется немного понятным, но только потому, что Xcode не совсем точно указывает сам параметр, в первый раз немного сложно определить.

Xcode кричит, потому что метод хочет видеть точные типы параметров при вызове метода, это так просто.

Решение для примера:

var request: URLRequest? = nil

let task = URLSession.shared.dataTask(
            with: request!,
            completionHandler: { data, response, error in
                DispatchQueue.main.async(execute: {

                })
            })
        task.resume()

Просто использовал URLRequest вместо NSMutableURLRequest .

Нет точных совпадений при вызове метода экземпляра '* * *'

Это общее сообщение об ошибке для неправильного введите вызовы метода. Вот почему я добавил сюда, чтобы помочь другим.

Надеюсь, этот ответ поможет некоторым из вас.

Лучшее.

1 голос
/ 07 августа 2020

Я использовал dataTask с URL-адресом, но я разворачивал URL-адрес как NSURL, и поэтому он выдавал мне ошибку.

Я делал это:

if let url = NSURL(String: "http://myyrl.com/filename.jpg") {
      //my code
}

Что исправило ошибку, заменив NSURL на URL:

if let url = URL(String: "http://myyrl.com/filename.jpg") {
      //my code 
}
...