Swift 4.2 - Получить обработчик UIAlertAction - PullRequest
0 голосов
/ 07 января 2020

Я новичок в 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

...