18027

[code]

    //ボタンがタップされた時のメソッド
            func buttonTapped(sender:UIButton){
                var tappedButtonTitle:String = sender.currentTitle!
                println("\(tappedButtonTitle)ボタンが押されました！")
    
                //ボタンタイトルで条件分岐
                switch tappedButtonTitle {
                case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
                    numberButtonTapped(tappedButtonTitle)
                case "x", "-", "+", "÷":
                    operatorButtonTapped(tappedButtonTitle)
                case "=":
                    equalButtonTapped(tappedButtonTitle)
                default:
                    clearButtonTapped(tappedButtonTitle)
                }
    
            }
    
            func numberButtonTapped(tappedButtonTitle:String){
                println("数字ボタンタップ：\(tappedButtonTitle)")
                //タップされた数字タイトルを計算できるようにDouble型に変換
                var tappedButtonNum:NSDecimalNumber =
                NSDecimalNumber(string:tappedButtonTitle)
    
                //入力されていた値を10倍にして1桁大きくして、その変換した数値を加算
                number1 = number1.decimalNumberByMultiplyingBy(
                    NSDecimalNumber(string: "10")).decimalNumberByAdding(tappedButtonNum)
    
                //計算結果ラベルに表示
                resultLabel.text = number1.stringValue
            }
    
            func operatorButtonTapped(tappedButtonTitle:String){
                println("演算子ボタンタップ：\(tappedButtonTitle)")
                operatorId = tappedButtonTitle
                number2 = number1
                number1 = NSDecimalNumber(string: "0")
            }
    
[/code]

上記のような記述をしていて、ボタンがタップされた時に  
ボタンによって、それぞれの関数を呼び出してきているのですが、

[code]

    cannot capture 'numberButtonTapped'before it is declared
    
[/code]

などとエラー表示されてしまいます。

かといって、タップされた時のメソッドを、それぞれのボタンの関数の後に記述すると  
また、別のエラーが起きてしまいます。

いまいち調べてもよくわからなかったのですが、解決策を教えていただけると幸いです。


CC BY-SA 3.0
2015-10-24T11:10:28.817
18020
2015-10-24T16:17:09.190
8415
question
swift
Swiftでbefore it is declaredとエラーが出る


Swift 1.xの制限ですね。Xcode 7.xにアップグレードしてSwift
2.xで書き直すか、そうでなければ、各メソッドをローカルFunctionではなく、外側に出して普通のインスタンスメソッドとして実装すれば解決します。

すべてのコードが掲載されていませんので、エラーの内容からの推測ですが、それぞれのメソッドを別のメソッドの中に書いていますよね？それが原因です。


CC BY-SA 3.0
2015-10-24T16:17:09.190
18027
2015-10-24T16:17:09.190
5519
18020
answer