1
私のコードではプロトコルを使いたくありません。クローズを使用したいのですが、私はSwiftで新しくなっています。ここでプロトコルをtypealiasまたはclosureに変更するには
はここでクラス
class SplashPresenterImp: SplashPresenter, OnFinishedListener {
private var interactor: SplashInteractor
private var splashNetworkProtocol: SplashNetworkProtocol
init() {
interactor = SplashNetworking()
}
func startDownloadConfigs(splashNetworkProtocol: SplashNetworkProtocol){
if interactor != nil {
interactor.loadConfigs(listener: self)
self.splashNetworkProtocol = splashNetworkProtocol
}
}
func startDownloadDictionary(splashNetworkProtocol: SplashNetworkProtocol) {
if interactor != nil {
interactor.loadDictionary(listener: self)
self.splashNetworkProtocol = splashNetworkProtocol
}
}
func onFinishedGetDictionary(dictionary: Dictionary) {
//save dictionary
if splashNetworkProtocol != nil {
splashNetworkProtocol.onSuccess()
}
}
func onFinishedGetConfigs(config: Config) {
//save configs
if splashNetworkProtocol != nil {
splashNetworkProtocol.onSuccess()
}
}
func onFinishedWithError(error: AMError) {
if splashNetworkProtocol != nil {
splashNetworkProtocol.onError(error: error)()
}
}
}
の一例である私はdownloadConfigがdownloadDictionaryを開始する完了したときに閉鎖を持っている私のViewControllerにしたいどのようなプロトコル
protocol SplashNetworkProtocol: class {
func onSuccess()
func onError(error: AMError)
}
です。私はそれがここにJavaを扱う方法を知っている
は私が迅速に同じ結果を持ちたいコード
mPresenter.startDownloadConfigs(new SplashNetworkProtocol() {
@Override
public void onSuccess() {
downloadDictionary();
}
@Override
public void onError(final AMError error) {
}
});
です。誰も私にこれを行う方法のアドバイスを与えることができますか?
さらに明確に私はSplashNetworkProtocol
を取り除き、閉鎖のみを使用したいと思います。
func startDownloadDictionary(onSuccess:() -> Void, onError:() -> Void)
しかし、成功とエラーの両方を処理する単一の閉鎖を使用してさらに良い:
迅速な結果がこの
mPresenter.startDownloadConfigs(onSuccess: {} onError{}
何SplashPresenterImpクラスを変更する必要がありますか?私は代わりに何かを宣言したいSplashNetworkProtocol – pmb
必要なすべての情報は上記の答えに含まれています。 – Oskar
しかし、コールバックはonFinishedGetDictionaryまたはonFinishedGetConfigsを呼び出す必要があります – pmb