以前它在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