Аналоговый интерфейс в Swift для реализации обратных вызовов - PullRequest
0 голосов
/ 28 сентября 2018

Пожалуйста, помогите мне сделать интерфейс в Swift, чтобы использовать его в целях обратных вызовов.

Пример на Java:

public interface ErrorListener {
    void onError(String errorMsg);
}

class SomeUiClass implements ErrorListener {

    public SomeUiClass () {
        SomeWorkingClass s = new SomeWorkingClass();
        s.setErrorListener(this);
        s.doSomething(true);
    }

    @Override
    void onError(String errorMsg) {
        System.out.println("Error msg: " + errorMsg);
    }
}

class SomeWorkingClass {

    ErrorListener listener;

    void setErrorListener (ErrorListener listener) {
        this.listener = listener;
    }

    void doSomething (boolean withError) {
        if (withError) listener.onError("Test error");
    }

}


//....
SomeUiClass ui = new SomeUiClass(); // prints: Error msg: Test error 

Итак, я попытался использовать protocol в Swift дляс этой целью, но я не понял, как правильно его использовать.

1 Ответ

0 голосов
/ 28 сентября 2018

Это бы выглядело так быстро

protocol ErrorListener {
    func onError(errorMsg:String)
} 
class SomeUiClass : UIViewController ,  ErrorListener { 

    func onError(errorMsg:String)
        print("Error msg: ", errorMsg)
    }
}

class SomeWorkingClass : UIViewController{

    weak var listener:ErrorListener?

    func setErrorListener (listener:ErrorListener) {
        self.listener = listener
    } 
} 

let ui = SomeUiClass() // prints: Error msg: Test error 
...