以前它在Swift 3中运行良好,但是当我切换到Swift 4时,找不到类型JSON(SwiftyJson Library)的完成问题

static func getRoster(information: [String: String], completion:@escaping ([Player],JSON,Paging?,WSResponse,NSError?) -> Void){
        Alamofire.request(NetWorkingConstants.baseURL+NetWorkingConstants.Team.get_all_roster, method: .post, parameters: information, encoding: JSONEncoding.default, headers:StarsLeagueUser.sharedInstance.getDefaultHeaders()).responseJSON { (response) in
            switch response.result {
            case .success(let value):
                let json = JSON(value)
                let wsResponse = WSResponse(code: json["response_code"].stringValue, message: json["message"].stringValue)


                if wsResponse.code == ServerCode.success{
                    print("Success")

                }else if wsResponse.code == ServerCode.unauthorized{
                    print("Session Expire")
                }
            case .failure(let error):

               print("Network Error")
                let wsResponse = WSResponse(code: "1000", message: "Network Error")
                completion([],nil,nil,wsResponse,error as NSError?)//Here is error - Nil is not compatible with expected argument type 'JSON'
                print("GetRoster")
            }
        }
    }

最佳答案

更改为(,JSON?

func getRoster(information: [String: String],
 completion:@escaping ([Player],JSON?,Paging?,WSResponse,NSError?) -> Void){

如果能够返回一个nil值,那么它应该是可选的
将返回类型设置为非可选意味着您必须返回一个非可选值,因此返回nil是一个与您一样的问题
var str1:String = nil // error
var str2:String? = nil // ok

10-07 19:33
查看更多