2016-04-14 9 views
1

私はいくつかのコードを整理し、より複雑な関数で長いif文を置き換えようとしています。この状況では、変数 "pickerSelectedName"で2つのラベルを更新しますが、今作成した関数がプログラムをクラッシュさせます。クラッシュ:「スレッド1:EXC_BAD_ACCESS」?

エラーコード - スレッド1:EXC_BAD_ACCESS(コード= 2、アドレス= 0xbf784ffc)

残念ながら誰かた場合、私は思っていた...私はまだSWIFTとXcodeに新しいですので、私はデバッガで素晴らしいではありませんよなぜこれがクラッシュするのかを説明するのに役立つでしょうか?

class Person { 

    var name = String() 
    var age = Int() 

    let nameList:Dictionary = ["Bob":Bob(),"Joe":Joe(),"Tom":Tom()] 

    class Bob:Person { 
     override init() { 
      super.init() 
      name = "Bob" 
      age = 27 
     } 
    } 

    class Joe:Person { 
     override init() { 
      super.init() 
      name = "Joe" 
      age = 26 
     } 
    } 

    class Tom:Person { 
     override init() { 
      super.init() 
      name = "Tom" 
      age = 28 
     } 
    } 
} 

のViewController

class ViewController: UIViewController { 

    @IBOutlet weak var nameLabel: UILabel! 
    @IBOutlet weak var ageLabel: UILabel! 

    var pickerSelectedName = "Bob" 

    var name = String() 
    var age = String() 

    override func viewWillAppear(animated: Bool) { 
     updateLabel(pickerSelectedName) 
    } 

    func updateLabel(name:String) { 
     var selectedName = String() 
     var selectedAge = String() 
     if Person().nameList[name] != nil { 
      selectedName = (Person().nameList[name]?.name)! 
      selectedAge = (Person().nameList[name]?.name)! 
     } else { 
      selectedName = "Error" 
      selectedAge = "Error" 
     } 
     nameLabel.text = selectedName 
     ageLabel.text = selectedAge 
    } 
} 
+0

あなたの 'viewWillAppear(animated:Bool)'メソッドでは、 'selectedName'プロパティがどこで宣言されたのか見つかりませんでした。あなたのコードのいくつかを省略しましたか、意図的にしましたか? – Leviathlon

+0

また、 'People'は実行可能なクラス名ではなく、バッグクラスではないので、クラス名に単数名詞を使用する傾向があります。 「人」は行く道だ。 – Leviathlon

+0

ああ、申し訳ありません...それはpickerSelectedNameだったはずです。私はちょうど更新、良い見つける。 – sMk

答えて

1

定義されていない同じタイプのキーコレクション内の同じタイプのと値の間の辞書を記憶する団体注文する。 まず、以下の構文は上記の辞書の定義には間違っています。

let nameList:Dictionary = ["Bob":Bob(),"Joe":Joe(),"Tom":Tom()] 

第二のものは、あなたが人々の内部クラスだけでなく、人々のサブクラスとしてクラス(ボブ、ジョーとトム)を宣言しているオブジェクト指向programming.Sinceの概念に手直ししてください。一度に一つのことをしてください。

+0

もう少し詳しいことはありますか?辞書にはString型のキーとPerson型の値が含まれていますか? – sMk

関連する問題