Как я могу получить данные, хранящиеся в отдельном классе, при вызове из ViewController?IOS

Программируем под IOS
Ответить
Anonymous
 Как я могу получить данные, хранящиеся в отдельном классе, при вызове из ViewController?

Сообщение Anonymous »

Сейчас я изучаю разработку iOS с использованием Swift. Я делаю простое приложение погоды. У меня есть несколько кнопок, чтобы узнать погоду на ближайшие 4 часа. Я получаю информацию о погоде из API темного неба, возвращаемую в формате JSON. Я наконец понял, как получить правильные данные из JSON, и создал класс, который извлекает данные.

Код: Выделить всё

typealias WeatherCallback = (Weather) -> Void
typealias ErrorCallback = (Error) -> Void

class NetworkManager {

class func getWeather(latitude: String, longitude: String, onSuccess: WeatherCallback? = nil, onError: ErrorCallback? = nil) {

let urlString = "https://api.darksky.net/forecast/(api key)/" + latitude + "," + longitude + "?units=si"

let url = URL(string: urlString)

URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
onError?(error!)
} else {
do {
let json  = JSON(data: data!)
let weather = Weather()

DispatchQueue.main.async {
weather.updateWithJSON(dict: json["currently"], hour: 0)

for i in 1...4 {
weather.updateWithJSON(dict: json["hourly"]["data"][i], hour: i)
}
}
onSuccess?(weather)
}
}
}.resume()
}
}
И у меня есть другой класс для хранения полученных данных.

Код: Выделить всё

class Weather {

public var currentTime: String = ""
public var currentTemperature: String = ""

public var nextHourTime: String = ""
public var nextHourTemperature: String = ""

public var nextTwoHourTime: String = ""
public var nextTwoHourTemperature: String = ""

public var nextThreeHourTime: String = ""
public var nextThreeHourTemperature: String = ""

public var nextFourHourTime: String = ""
public var nextFourHourTemperature: String = ""

func updateCurrentData(time: String, temp: String) {
currentTime = time
currentTemperature = temp
}

func updateWithJSON(dict: JSON, hour: Int){

switch hour {
case 0:
currentTime = dict["time"].stringValue
currentTemperature = dict["temperature"].stringValue

case 1:
nextHourTime = dict["time"].stringValue
nextHourTemperature = dict["temperature"].stringValue

case 2:
nextTwoHourTime = dict["time"].stringValue
nextTwoHourTemperature = dict["temperature"].stringValue

case 3:
nextThreeHourTime = dict["time"].stringValue
nextThreeHourTemperature = dict["temperature"].stringValue

case 4:
nextFourHourTime = dict["time"].stringValue
nextFourHourTemperature = dict["temperature"].stringValue

default:
print("rip")
}
}
}

Моя проблема в том, что я не могу получить доступ к сохраненным значениям в классе Weather из ViewController.
Например
let Weather = Weather()

print(weather.currentTime)
Любой Помогите мне указать правильное направление, было бы здорово!


Подробнее здесь: https://stackoverflow.com/questions/413 ... iewcontrol
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»