protocol textingprotocol : class {
func didEnterText (text:String)
}
class secondViewController: UIViewController {
weak var delegate:textingprotocol?
@IBOutlet weak var txtField: UITextField?
@IBAction func dismissButton(sender: UIButton) {
delegate!.didEnterText(txtField?.text) // A: doesn't work
delegate!.didEnterText(txtField?.text!) // B: doesn't work
delegate!.didEnterText((txtField?.text)!) // C: works
}
A:オプションの連鎖をまだ行っていないのでしょうか? テキストに値がある場合にのみ行が機能し、そうでない場合は正常に失敗しますか? それでも、次のようになります。
オプションの型「文字列?」の値 開封されていません。「!」を使用するつもりでしたか? また '?'?
B: 上記のコンパイラ エラーが発生した場合でも、ラップを解除しますが、C のようにしたいという点で満足していません。私が理解しているように、?
私は txtField を!
アンラップし、テキストをアンラップしましたが、なぜまだ混乱していますか?うまくいきません
Cは機能するのにBが機能しないのはなぜですか? ライン C よりもクリーンな方法はありませんか? ライン C は非常に魅力的ではないように見えます。