私はここで多くの質問を検索しましたが、誰も以下の質問のためではないようです。 あるクラスから別のクラスに値を返すブロックを書く方法は?
私はSwiftでブロック補完を作成しようとしています。
これは、クラスXのオプションの変数閉鎖
var onLogCompletion:((_ logThing:String) ->())?
これは、クラスXからクラスXの機能
func printerCompletion(currentLog:String) -> Void {
//This is giving me an error:
//Cannot call value of non-function type '((String) ->())?'
!(onLogCompletion(currentLog))
}
であり、私は呼びたいですこのような機能。ビューコントローラで
printerCompletion("New Log")
、私はこのようなものをやってみたいです。
let objX = X()
objX.onLogCompletionm { (log) in
print(log)
}
That should print
New Log
in a View Controller file.
私はOBJの-Cではなくスウィフトでこれをやった経験を持っています。
これを解決するには、またこれを行うよりよい方法がある場合は、こちらをご覧ください。
はnilになります賢明な他のブロックから呼び出す前に、ブロックを定義する必要が
はあなたが表示されことができますこの 'printerCompletion'を呼び出すのは' init'から呼び出すと 'onLogCompletionm'がセットされておらず、補完を呼び出すときに強制的に折り返してしまうからですあなたは無限になっています。コードをもっと表示してください。 –