请帮助我在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

所以,我试着用Swift中的protocol来实现这个目的,但是我不明白如何正确地使用它。

最佳答案

在斯威夫特看来

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

10-07 14:28