2016-08-11 27 views
3

さまざまな機能によって変数を受け取ることができません。Swiftグローバル変数を設定する

私が割り当てた

var ageDescription: String = String() 

グローバル変数としてクラスの外側だけでなく、2 ibactions

@IBAction func ageChanged(sender: UISegmentedControl) { 
    switch age.selectedSegmentIndex { 
    case 0: 
     print("Under 18") 

     let ageDescription = "under 18" 
    case 1: 
     print("Over 18") 

     let ageDescription = "over 18" 
    case 2: 
     print("Strictly over 21") 
     let ageDescription = "strictly over 21" 
    default: 
     print("IDK") 
    } 


} 



@IBAction func saveButtonTapped(sender: UIButton) { 
    print(ageDescription) 
} 

を、私は、ユーザーが年齢のための選択肢を選択することができるようにしたいです結果を印刷するためのsaveButtonがあります。しかし、それはsaveButtonがタップされた後のようですが、それはnilを出力します。私はそれが変数ageDescriptionと関係があると信じていますが、何が間違っているのか分かりません。

答えて

4

関数内で新しい変数に値を代入していて、別の関数でグローバル変数にアクセスしようとしています。したがって、それはあなたのためにはありません。グローバル変数を宣言したので、ageChanged内の別のローカル変数を宣言する必要はなく、グローバル変数にアクセスするだけです。

このお試しください:グローバル変数を使用した以外にも

@IBAction func ageChanged(sender: UISegmentedControl) { 
    switch age.selectedSegmentIndex { 
    case 0: 
     print("Under 18") 

     ageDescription = "under 18" 
    case 1: 
     print("Over 18") 

     ageDescription = "over 18" 
    case 2: 
     print("Strictly over 21") 
     ageDescription = "strictly over 21" 
    default: 
     print("IDK") 
    } 
} 
+0

回答としてマークすることを避けたいのは何ですか? – Santosh

+0

@サントスケビンはupvote特権を得ていないので、あなたの答えをアップアップすることはできません(これは15人になります)。しかし、彼はあなたの答えを受け入れたままにしておくことができます。 – JAL

2

switch文でletを削除します。変数ageDescriptionを再作成しています。

1

は簡単にあなたのswitch文でローカル変数をインスタンス化しているコードのにおいになってきています。これは、代入時にグローバル変数のスコープと重複します。そのため、グローバル変数は決して変更されません。グローバル変数を使用するには、 'let'キーワードを削除してください。

関連する問題