プログラミングは初めてで、iPhone 8 アプリを作成するために iTunes U でスタンフォード コースを受講し始めました。Xcode 7 と Swift 2 を使用して El Capitan にいる間、彼らは Xcode 6 と Swift 1 を使用しています。Xcode が検出して修正するのに役立つコードのいくつかの違いを見つけました ("println" はたとえば、現在は「印刷」しています)が、コードの特定の部分でつまずいています:
var displayValue: Double {
get {
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set {
display.text = "\(newValue)"
userIsInTheMiddleOfTypingANumber = false
}
}
これがまさに先生が書いた通りであることを確認するために、私は何度も再確認しました. 彼は正しくビルドされ、正しく機能しましたが、私のビルドは正しくビルドされましたが、操作しようとするとこの致命的なエラーが表示されます。
私はインターネットを見回しており、このサイト (スタンフォード電卓アプリがクラッシュし続ける) を含むいくつかの同様の例を見つけましたが、提案されたすべてを試した後、何かがシステムで一意であるか、動作しているに違いないと結論付けました。この問題を抱えていた他の環境よりも新しい Xcode/Swift 環境で。問題を解決した解決策はなく、すべての解決策で独自のエラーが追加されました。
他の誰かの質問に答えて、誰かがこのコードを使用して、「nil」が「display」によって返された場合に代わりに「0」を提供することを保証することを提案しました:
return (NSNumberFormatter().numberFromString(display.text) as? Double) ?? 0
私はこれを試しましたが、エラーが増えるだけでした.Swift 2に関連しているようです. Swift 1で良かった??)。