次のコードでは、なぜ「somevar」に5が割り当てられていないのですか?なぜ暗黙的にアンラップされたオプションが割り当てられていないのですか?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = Int(5) // why 5 is not assigned to somevar here
}
}
背景:
somevar
は、この変数がゼロである場合、この変数は無視されます使用してコマンドを意味し、オプション変数として宣言されます。
例:
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar? = 5 // this command will be ignored bcz somevar is nil
}
}
が強制的に我々は、コマンドが実行された場合、次の行には、実行されることを確信しているように、「オプションの暗黙的に開封された」使用私たち自身のリスクでコマンドを実行するには
somevar! = 5
fatal error: unexpectedly found nil while unwrapping an Optional value
この行が実行されると、なぜ「5」「SOMEVAR」に割り当てられていない代わりに、致命的なエラーが発生しましたか?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = 5
}
}
varに値を割り当てる正しい方法は 'somevar = 5'ではなく' somevar? = 5' –