使用swiftyJSON从viewcontroller传递数据到类

时间:2016-09-06 15:13:23

标签: swift swift3 swifty-json ios10

我是一个新手,还在学习swift 3,我在这里遇到麻烦。我正在使用Alamofire和SwiftyJSON来从Open Weather API获取JSON数据。我使用tableview创建了一个应用程序,用于显示API的预测数据。 根据我的学习,我应该将JSON代码放在Model(类)和viewcontroller中,仅用于调用。但是我遇到了一个问题,因为这个JSON是带有这样的键的数组:

"list":[  
    {  
        "dt":1473134400,
        "temp":{  
            "day":298.71,
            "min":298.15,
            "max":298.71,
            "night":298.15,
            "eve":298.71,
            "morn":298.71

*列表正在循环播放。

我想从该JSON获取最小和最大数据。但不确定如何使用swiftyJSON将此视图控制器中的数据解析为init。因为我从一些视频中学到了这一点,但他们正在使用字典..

这是我的视图控制器

func downloadForecastWeatherDetail(completed: DownloadComplete){
    let forecastWeatherUrl = URL(string: FORECAST_WEATHER_URL)
    Alamofire.request(forecastWeatherUrl!, withMethod: .get).responseJSON {response in
        switch response.result {
        case .success:
            if let value = response.result.value{
                let json = JSON(value)
                if let list = json["list"].array {
                    //print(list)
                    for (key,subJSON) in json["list"]{
                        let forecasting = Forecast(weatherDict: subJSON)
                        self.forecast.append(forecasting)
                        print(forecasting)
                    }
                    self.tableView.reloadData()
                }
            }
        case .failure(let error):
            print(error)
        }
        completed()
    }
}

这是我的班级:

init(weatherDict: JSON){
    if let min = weatherDict["temp"]["min"].double{
        self._forecastLowTemp = min
        print("\(self._forecastLowTemp)min")
    }
    if let max = weatherDict["temp"]["max"].double{
        self._forecastHighTemp = max
        print("\(self._forecastHighTemp)max")
    }
}

这段代码不起作用..所以再一次我的问题是,如何使用SwiftyJSON将数据从vc中的列表传递到类中的init?因为我需要将它附加到“预测”数组类以在tableview中显示它。对不起我的长问题

0 个答案:

没有答案