Проблема в том, что вы не можете делать то, что делаете. Селектор, который вы установили для UIRefreshControl
и события «значение изменено», должен иметь очень специфическую подпись. Ознакомьтесь с разделом «Механизм целевого действия» документации UIControl
.
Селектор должен принимать либо ноль, либо один, либо два параметра, и эти параметры могут быть только очень специфическими параметрами. Первый (если указан) должен быть ссылкой на элемент управления (sender
). И второе (если предусмотрено) должно быть UIEvent
.
Вы не можете создать отправителя, который принимает блок завершения. Это причина аварии. Один параметр рассматривается как элемент управления обновлением, но код обрабатывает его как замыкание, следовательно, ошибка EXC_BAD_ACCESS
.
Учтите это, учитывая, что вы используете GetData
, где передается обработчик завершения? Что обрабатывает результат обработчика завершения?
Учитывая, что ничто не может иметь дело с этим обработчиком завершения, просто измените GetData
(который должен называться getData
), чтобы не принимать никаких параметров, и удалите использование completion
.
@objc func getData(){
Alamofire.request("\(ConstanClass.http)/api/order?token=\(ConstanClass.token)").responseJSON { response in
switch response.result {
case .success:
if let value = response.result.value{
let json = JSON(value)
//Geting Json
}
case .failure(let error):
self.setErrorForm(self)
self.hud.dismiss(animated: true)
print(error)
}
}
}
И обновите свое использование:
refresher.addTarget(self, action: #selector(getData), for: UIControlEvents.valueChanged)