Как вы можете выполнить URLRequest, который не имеет / не нуждается в теле ответа? - PullRequest
0 голосов
/ 15 апреля 2019

Субъект говорит все это. Мы хотим создать URLRequest, где все, что нас волнует, это код возврата HTTP (например, 200, 400 и т. Д.), Который мы можем получить из объекта httpUrlResponse. Нам не нужно тело ответа, поскольку его нет.

Вот как вы делаете запрос, который ожидает тело ответа ...

let urlRequest = [insert code to make request]
let urlSession = [insert code to make session]

let task = urlSession.dataTask(with: urlRequest) {

    (responseBodyData, httpUrlResponse, error) in

    if let error = error {
        // handle error
        return
    }

    guard let responseBodyData = responseBodyData else {
        // Handle missing data
        return
    }
}

task.resume()

Но как ты это делаешь, если не хочешь / не нужен responseBodyData? Или вы просто используете тот же код, игнорируя поле responseBodyData, заменяя его на _, поскольку оно является необязательным и может игнорироваться?

1 Ответ

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

Из вашего комментария:

Что мне интересно, так ли это.Другими словами, было ли что-то еще, у кого не было этого параметра - другая подпись закрытия или что-то еще.

Нет.Подпись замыкания предопределена: она должна принимать три параметра.Имена не имеют значения, но число имеет значение:

let task = urlSession.dataTask(with: urlRequest) {(body, response, err) in

Если вы хотите игнорировать первый параметр, игнорируйте его (т.е. не обращайтесь к нему снова в фигурных скобках).Вы можете, если хотите, заменить знак подчеркивания, чтобы показать себе, что вам не нужен первый параметр:

let task = urlSession.dataTask(with: urlRequest) {(_, response, err) in

Но это не требуется;компилятору не важно, так или иначе.

...