2016-03-21 15 views
-3

電卓を作ったのですが、オペレータボタンを押した後に=を入れようとしていますが、そのたびにクラッシュします。電卓のエラー

var equal = Double("=") 
var DisplayValue: Double? { 
    get { 
     return NSNumberFormatter().numberFromString(display.text!)!.doubleValue 
    } 
    set { 
     display.text = "\(newValue)" + equal userstyping = false 
    } 
} 
+1

クラッシュに関しては、失敗しないかどうかわからない限り、 '!'の使用を避けてください。例えば。 'return display.text == nil? nil:NSNumberFormatter()。numberFromString(display.text!)?。doubleValue'。 'equal'の初期化と' display.text'を設定しているときのその後の使用のどちらも意味をなさないので、あなたが何をしようとしているのかを教えてください。 – Rob

答えて

1

私はあなたがラインで達成しようとかわからないんだけど:

var equal = Double("=") 

しかし、「=」はゼロとして解釈することができないとして、それが効果に相当します:

その時点で
var equal : Double? = nil 

私は、あなたはおそらく、あなたが実行したときにクラッシュを取得すると思う:

display.text = "\(newValue)" + equal userstyping = false 

あなたが本当に持っていない限りそれはコンパイルされませんので、それは言うことは本当に不可能ですが:

display.text = "\(newValue)" + equal 
userstyping = false 

も、あなたは文字列とダブルを追加することはできませんので、実際にはコンパイルされませんか?

私はこれを調べようとしますが、実行時にコンパイルや失敗した場合、実際のコードはありません。