2017-08-16 6 views
0

Swift 1.2の書籍[1]の指示に従っています.1つのテキストフィールド、1つのボタン、および1つのラベルを使用して簡単な温度変換アプリケーションを作成する方法です。私はSwift 3を使用しています。テキストフィールドに温度を入力し、 "Convert"ボタンを押して結果を取得する必要がありますが、 "タイプ 'Stringの値を変換できません。 「強制的にNSString」と入力します。タイプ 'String?'の値を変換します。 'NSString'と入力してください

import UIKit 

class ViewController : UIViewController { 

    @IBOutlet weak var tempText : UITextField! 

    @IBOutlet weak var resultLabel : UILabel! 

    override func viewDidLoad() { 

     super.viewDidLoad() 
    } 

    @IBAction func convertTemp(_ sender: Any) { 

     let fahrenheit  = (tempText.text as NSString).doubleValue 
     let celsius   = (fahrenheit - 32)/1.8 
     let resultText  = "Celsius \(celsius)" 
     resultLabel.text = resultText 
    } 

    override func didReceiveMemoryWarning() { 

     super.didReceiveMemoryWarning() 
    } 
} 

私は、このような後に感嘆符を追加することができます。

let fahrenheit  = (tempText.text as! NSString).doubleValue 

しかし、私はまだ警告を得る: 『?文字列』から「キャスト無関係の型 'NSString'は常に失敗します。

これはSwift 3でどのように行う必要がありますか?

[1] Neil Smyth。 iOS 8 App Development Essentials - Second Edition:XcodeとSwift 1.2を使用してiOS 8アプリケーションを開発する方法を学びます。 ISBN 978-1511713337。

+5

です。 Swift 4は数週間後にリリースされる予定です(今はベータ版)。 Swift 3用に書かれたチュートリアルを見つけてください。 – rmaddy

+1

Swift 3をプログラミングするときにSwift 1.2用の本を使用しようとするのはなぜですか?これらはまったく異なる言語です! – matt

+0

'let fahrenheit = Double(tempText.text)'?そこに見てください:https://stackoverflow.com/questions/40372656/convert-optional-string-to-double-in-swift-3 – Larme

答えて

3

にキャストするタイプは、Doubleを取得するのはかなり悪い習慣です(Swift 1でも)。

安全スウィフト3溶液は、オプションのバインドにスウィフト1.2の本あなたにそれは価値があるよりもはるかに多くの問題を引き起こすことが起こっている以下のtext財産とDouble変換

@IBAction func convertTemp(_ sender: Any) { 

    if let degrees = tempText.text, let fahrenheit = Double(degrees) { 
     let celsius   = (fahrenheit - 32)/1.8 
     let resultText  = "Celsius \(celsius)" 
     resultLabel.text = resultText 
    } else { 
     resultLabel.text = "Conversion failed" 
    } 
} 
+0

これも機能します。ありがとう! – tomihasa

+0

@tomihasaこの回答は、質問の下の最後のコメントに記載された2つの行よりはるかに優れています。このコードは、ユーザーが有効な番号ではない値を入力したときにクラッシュしません。 – rmaddy

関連する問題