プレイグランドで下記のコードを実行できるのにXcodeではエラーになっていまいます!
下記のコードではnilが入っていた変数aをメソッドにより中身をクラスAに入れ替えた上でクラスAのプロパティを使用しています。もちろんエラーにはなりません。
class A {
var num = 0
}
class B {
var a: A?
func assignment() {
a = A()
}
}
var b = B()
b.assignment()
print(b.a!.num) // 0と出力
しかしこれと同じような事をXcodeで試すとエラーになります。
状況
クラスViewController2の他に別のファイルにクラスViewController(既存の)が宣言されていてその中にmainStoryboardと接続されたラベル(myLabel)が1つある。
nilが入っていた変数viewControllerをviewDidLoadメソッド内でViewController()を代入した上でクラスViewControllerのプロパティmyLabelを参照しますが、nilが入っている変数をアンラップしてしまったとエラーが表示されます。クラスViewControllerに変更したのでnilは入っていないはずなのですが…可能性のある原因がわかる方教えてください!
class ViewController2: UIViewController {
var str = "Hello" var viewController: ViewController? = nil override func viewDidLoad() { super.viewDidLoad() viewController = ViewController() str = viewController!.myLabel.text } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }
}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/04 09:28