我有请求函数,在获得JSON之后。我将数据解析为结构实例。我如何从我的函数返回这个实例?现在它用零变量返回实例。
获取JSON并将其解析为结构是正确的,这与返回实例有问题。
class FinantialRequest {
static func getData(id: Int, year: Int, mod : String, period: String)->CinemaChartModel{
let parameters: Parameters = [
"idc": id,
"yy": year,
"func": mod
]
var chartModelSample = CinemaChartModel()
request("https://placeholder.com/app.php", method: .post, parameters: parameters, encoding: URLEncoding.default).debugLog().responseJSON { responseJSON in
switch responseJSON.result {
case .success(let value):
do {
let parsedData = try FirebaseDecoder().decode(FinDataSample.self, from: value)
parsedData.data.forEach { sample in
switch sample.b.name {
case "Оборот кино":
switch finantialDataSample.period! {
case "1 Квартал":
chartModelSample.moneyPeriodCinema = sample.k1
chartModelSample.moneyBudgetPeriodCinema = sample.b.k1
case "2 Квартал":
chartModelSample.moneyPeriodCinema = sample.k2
chartModelSample.moneyBudgetPeriodCinema = sample.b.k2
case "3 Квартал":
chartModelSample.moneyPeriodCinema = sample.k3
chartModelSample.moneyBudgetPeriodCinema = sample.b.k3
case "4 Квартал":
chartModelSample.moneyPeriodCinema = sample.k4
chartModelSample.moneyBudgetPeriodCinema = sample.b.k4
default: break
}
chartModelSample.moneyYyCinema = sample.yy
chartModelSample.moneyBudgetYyCinema = sample.b.yy
case "Количество людей":
switch finantialDataSample.period! {
case "1 Квартал":
chartModelSample.peoplePeriodCinema = sample.k1
chartModelSample.peopleBudgetPeriodCinema = sample.b.k1
case "2 Квартал":
chartModelSample.peoplePeriodCinema = sample.k2
chartModelSample.peopleBudgetPeriodCinema = sample.b.k2
case "3 Квартал":
chartModelSample.peoplePeriodCinema = sample.k3
chartModelSample.peopleBudgetPeriodCinema = sample.b.k3
case "4 Квартал":
chartModelSample.peoplePeriodCinema = sample.k4
chartModelSample.peopleBudgetPeriodCinema = sample.b.k4
default: break
}
chartModelSample.peopleYyCinema = sample.yy
chartModelSample.peopleBudgetYyCinema = sample.b.yy
default:
break
}
}
} catch let error {
print(error)
}
case .failure(let error):
print(error)
}
}
return chartModelSample
}发布于 2019-01-07 13:24:37
因为请求方法本身是一个闭包,所以不能直接从它返回。您需要像这样做完成处理程序:
static func getData(id: Int, year: Int, mod : String, period: String, completion: ((CinemaChartModel?)->Void)){
.............
} 像这样用你的结构触发它:
completion(chartModelSample)或者,如果您没有可以返回的值,则可以使用零值触发该值,例如:
completion(nil)您可以这样调用此方法:
getData(id: Int, year: Int, mod : String, period: String, completion:{ (model) -> Void in
.......
})https://stackoverflow.com/questions/54074753
复制相似问题