2015-11-19 1 views
6

Swiftでintを文字列に変換して逆にして結果を表示するにはどうすればいいですか?

プログラムは、F TO Cを反転して反転させることを想定しています。スイッチを押すと、オンからオフに変わり、CからF、オフはFからc、テキストフィールドの#の下に入力します。 送信ボタンをクリックすると、テキストフィールドのwhatsが入力され、inに転送され、アルゴリズムが実行されてテキストフィールドに表示されます。

変換が正しく行われていると思われますが、実際の結果は表示されません。あるいは、その変換方法が間違っている。

@IBOutlet weak var buttonClicked: UIButton! 
@IBOutlet weak var mySwitch: UISwitch! 
@IBOutlet weak var myTextField: UITextField! 

@IBOutlet weak var User: UITextField! 



func stateChanged(switchState: UISwitch) { 
    if switchState.on { 
     myTextField.text = "Convert to Celius" 
    } else { 
     myTextField.text = "Convert to Farheniet" 
    } 
} 

@IBAction func buttonClicked(sender: UIButton) { 
    if mySwitch.on { 
     var a:Double? = Double(User.text!) 
     a = a! * 9.5 + 32 
     User.text=String(a) 


     mySwitch.setOn(false, animated:true) 
    } else { 
     var a:Double? = Double(User.text!) 
     a = a! * 9.5 + 32 
     User.text=String(a) 

     mySwitch.setOn(true, animated:true) 
    } 

} 
+1

最初の問題は、スイッチの位置に関係なくFからCに変換していることです。あなたの問題はもっとありましたか? – Tyrelidrel

+0

まあ、どちらの場合でも変換関数が間違っているのが分かります。 C =(F - 32)* 5/9、F =(C * 9/5)+ 32 –

答えて

4

私はXCodeの(6.4)の古いバージョンを使用していますので、私のコードは、あなたからの少し異なるものになります。あなたの関数buttonClickedがUIButtonのAnyObject instendの引数を取るべきであると私は理解しています。また、コード内でstateChanged関数を呼び出すこともありません。次のコードは、あなたがしようとしていることを達成するのに役立ちます。

@IBOutlet weak var mySwitch: UISwitch! 
@IBOutlet weak var myTextField: UITextField! 

@IBOutlet weak var User: UITextField! 



override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    // sets the textfield to the intended conversion on load. 
    if mySwitch.on { 
     myTextField.text = "Convert to Celius" 
    } 
    else { 
     myTextField.text = "Convert to Farheniet" 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// changes the myTextFiled text to the intended conversion when the switch is manually switched on or off 
@IBAction func switched(sender: AnyObject) { 
    if mySwitch.on { 
     myTextField.text = "Convert to Celsius" 
    } 
    else { 
     myTextField.text = "Convert to Fahrenheit" 
    } 
} 
// changes the myTextField text to intended reverse conversion after the buttonClicked func is completed. 
func stateChanged(switchState: UISwitch) { 
if switchState.on { 
    myTextField.text = "Convert to Celsius" 
} 
else { 
    myTextField.text = "Convert to Fahrenheit" 
    } 
} 

// do the intended conversion(old version of XCode 6.4) 
@IBAction func buttonClicked(sender: AnyObject) { 
    if mySwitch.on { 
     var a = (User.text! as NSString).doubleValue 
     a = (a-32)*(5/9) 
     User.text="\(a)" 
     mySwitch.setOn(false, animated:true) 
     stateChanged(mySwitch) 
    } 
    else { 
     var a = (User.text! as NSString).doubleValue 
     a = a * (9/5) + 32 
     User.text="\(a)" 
     mySwitch.setOn(true, animated:true) 
     stateChanged(mySwitch) 
    } 
} 
関連する問題