Я пытаюсь сделать запрос GET через Alamofire и ожидать, что данные будут возвращены. Он отлично работает, когда я инициализировать мой класс данных в моем ViewController какПопытка получить данные из запроса GET
let dataRequest = DataClass()
, а затем вызвать мою функцию для получения данных, но когда я пытаюсь объявить его как
let dataRequest: DataClass!
и попытаться вызвать GET функция говорит, что неожиданно найдено нуль.
Причина, по которой я разворачиваю силу, по сравнению с инициализацией, заключается в том, что в моем классе данных у меня есть функция init, такая как init (адрес: String, Zip: Double).
Я поделюсь своими занятиями, поэтому, возможно, кто-то может дать мне некоторое представление о том, почему его возвращение ноль.
class FirstViewController {
var dataRequest: DataClass!
override func viewDidLoad() {
super.viewDidLoad()
dataRequest.downloadData { // Returns nil at this point
let initData = DataClass(dataRequest._address)
}
}
}
DATACLASS
Class DataClass {
var _address: String!
init(address: String) {
_address = address
}
func downloadProperties(completed: @escaping downloadComplete) {
Alamofire.request(Listings).responseJSON { response in
if let result = response.result.value {
let dict = JSON(result)
if let data = dict["data"].dictionary {
if let listingResultDict = data["listings"]?.array {
for list in listingResultDict {
if let propertyAddress = list["data"]["name"].string {
self._address = propertyName
}
}
}
}
}
complete()
}
}
}
Констант
typealias downloadComplete =() ->()
Позвольте мне знать, если там должно быть больше разъяснений.
Я могу» t вызвать DataClass без инициализации w хотя функция init все же, и данные пусты, пока я не вызову функцию downloadProperties. –
@bradfordgray; То, что я предложил, будет работать. В противном случае выполните 'dataRequest = Data (...)' then do 'dataRequest.downloadData' AFTER. – Brandon
Да, вы правы, мне просто нужно было добавить фиктивные данные в начальное объявление, а затем я мог бы назвать загрузку и заполнить все. Благодарю. –