私は Swift を学ぶのが初めてなので、代わりに Swift 2 を学ぶほうがよいと判断しました。次のコード スニペットを除いて、これまでのところすべてが理にかなっています。うまくいけば、誰かが私のためにこれに光を当てることができます.
//: Playground - noun: a place where people can play
import UIKit
//Works
let possibleNumber="2"
if let actualNumber = Int(possibleNumber) {
print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
}
else {
print("could not be converted to integer")
}
//Doesn't Work and I'm not sure why
let testTextField = UITextField()
testTextField.text = "2"
let numberString = testTextField.text //I know this is redundant
if let num = Int(numberString) {
print("The number is: \(num)")
}
else {
print("Could not be converted to integer")
}
コードの最初のセクションは、Apple の Swift 2 ebook から直接引用したもので、オプションのバインディングを使用して文字列を int に変換する方法が理解できます。2 番目のコードは基本的に同じですが、文字列が UITextField の text プロパティから取得される点が異なります。コードの下部で次のエラーが発生します。
Playground の実行に失敗しました: /var/folders/nl/5dr8btl543j51jkqypj4252mpcnq11/T/./lldb/843/playground21.swift:18:18: エラー: オプションの型 'String?' の値 開封されていません。「!」を使用するつもりでしたか? また '?'?if let num = Int(numberString) {
この行を使用して問題を修正しました:
if let num = Int(numberString!) {
2 番目の例で ! が必要な理由を知りたいだけです。最初はそうではありません。問題は、テキストフィールドから文字列を取得しているという事実に関係していると確信しています。ありがとう!