Ошибка возникает из-за того, что вы не можете передать nil
, если тип параметра не является обязательным.Объявите JSON
как необязательное (JSON?
).
В вашем случае я рекомендую использовать перечисление со связанными типами в качестве типа результата.
Преимущество заключается в том, что параметры лучше упорядочены, и вывсегда иметь необязательные типы, потому что вы возвращаете только соответствующие параметры
enum Result {
case success([Player], JSON, Paging, WSResponse)
case failure(WSResponse, Error)
}
Затем объявляете свой метод
func getRoster(information: [String: String], completion:@escaping (Result) -> Void) {
и возвращаете в случае ошибки
let wsResponse = WSResponse(code: "1000", message: "Network Error")
completion(.failure(wsResponse, error))
В методе вызывающего абонента используйте switch
switch result {
case let .success(players, json, paging, response):
// handle success
case let .failure(response, error):
// handle error
}