私はUIAlertAtion
を作成しようとしており、ハンドラもあります。私はthis質問からの答えを読んで、それを行う方法を知っています。UIAlertActionのクロージャ引数を処理する方法
私の質問は、それの閉鎖部分についてです。
1)私は書くことができます知っている:{alert in println("Foo")}
か{_ in println("Foo")}
けどはは{println("Foo")}
を書き込むことはできません。コメントhereでは、のアクションアクションを処理する必要があるため説明しています。
これは、ハンドラがタイプ(UIAlertAction) -> Void)?
であるため、渡されたalertActionを常にキャプチャする必要があることを意味しますか?
2) 私はまたthisを読み、答えは基本的に、あなたの引数として関数に渡すことができると言っているが、機能は私が書いた、タイプUIAlertAction -> Void
の何かを取る必要があります。
private func anything(action : UIAlertAction) {
print("hello")
}
、その後のような私のalertactionを書いた:なぜ私
let anotherAction = UIAlertAction(title: "hi", style: UIAlertActionStyle.Default,
handler: anything(action)) // error: Use of unresolved identifier 'action'
が混乱しかし、それに加えて、あなたは迅速にUIAlertActionStyle.Defaultを記述する必要はありません。コメントの中で )
3そのエラーを取得し、それはまた言いました。
'(title: String, (_) ->())' (aka '(title: String, _ ->())') is not convertible to '(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Void)?)' (aka '(title: Optional, style: UIAlertActionStyle, handler: Optional()>)'), tuples have a different number of elements
:.DEFAULTは、私はそれが.Default
let sendLogAction = UIAlertAction(title: "Log") { action in print("goodbye")}
にデフォルト設定されるだろう。しかし、私は次のエラーを取得するように、スタイルを使用していない書き込みを試みたが、あまりにも
の作品4) また、this答えを読んでください。私はなぜ我々が渡す必要があるのか分からないalert
それは意味をなさない。アラートのタイプが何であるかわからないのではなく、タイプを定義していないのですか?誰かが行動そのものを渡すことが一般的に役立つと私たちが何をすることができるのかを説明できますか?
私はこれが4つの質問として書かれていることを知っていますが、それは本当に基本的な質問だと思います。私は広範囲にreadを持っています。私は働いていて、遊び場で遊んでいるプロジェクトでクロージャー/コンプリートハンドラーを使用しましたが、まだ混乱しています。
#4は意味がありません。何を警告していますか? – rmaddy
@rmaddy 'switch action.style' ...彼はアラートを切り替えていますが、彼はすでに定義していません:' style:.Default' – Honey
彼は 'alert'を切り替えていません。彼は 'action.style'を切り替えています。いずれにしても、switch文は単なる例です。しかしそれは無意味です。あなたが設定したスタイルを既に知っているので、誰も実際のコードでそれを行うことはありません。 – rmaddy