Я новичок в iOS разработке
Мне нужно проверить действие, выполняемое при нажатии кнопки на моем UIAlertController
. Из того, что я искал, мне нужно получить handler
из UIAlertAction
.
К сожалению, создание расширения UIAlertController
для предоставления обработчика не вариант.
I попытался сделать что-то подобное в этом потоке (swift 2.2 ), но я получил ошибку.
Вот моя часть моего теста:
typealias AlertHandler = @convention(block) (UIAlertAction) -> Void
//part of the test
guard let myAlert : UIAlertController = self.view.presentedViewController as? UIAlertController
else { return fail("expect to have an alert view") }
var myAction : UIAlertAction?
for action in myAlert.actions {
if(action.title == NSLocalizedString(kActionTitle, comment: "")){
myAction = action
break
}
}
expect(myAction).notTo(beNil())
let handler = myAction?.value(forKey: "handler") as! AlertHandler //an error ocurr on this line: Thread 1: signal SIGABRT
handler(myAction!)
guard let myViewController : MyViewController = self.view.presentedViewController as? MyViewController
else { return XCTFail("expect to have a view") }
expect(myViewController).to(beAKindOf(MyViewController.self))
Есть какой-нибудь способ получить обработчик UIAlertController
на swift 4.2?
Спасибо!
ps: я нашел этот вопрос , но согласно дата, я думаю, что это о быстрой 2.x