2016-03-23 10 views
1

デフォルトの目的で2000に設定されているcurrentYearという名前の変数があります。 currentYearは文字列の配列内の変数なので、文字列はその年を知っています。これはクラスを持たないファイルにあります。これらの値は、グローバルにアクセス可能です。ボタンが押されると、それは別のViewControllerに行く2013年、2014年、2015年と2016年:のViewControllerで 新しいxcodeが更新されてから配列が変更されない -

import UIKit 

var currentYear = 2000 

var array = [ 
"The year you pressed is \(currentYear)", 

] 

は、私はそれが含まれている年に等しいタグとボタンがあります。

import UIKit 

class ViewController: UIViewController { 

    @IBAction chooseYearBtnPressed(sender: AnyObject) { 

     currentYear = sender.tag 

     print(array) 

     performSegueWithIdentifier("CustomSegue", sender: nil) 

    } 


} 

最近のxcodeのアップデートが行われる前は、うまくいきました。ボタンが押されるたびに、ロードされた配列は新しい値と同じcurrentYearになります。今それはしません。 currentYearに新しい値を代入した後、配列のcurrentYearは2000のままです。

これを修正するにはどうすればよいですか?currentYearは新しい値として渡すものに基づいて変更されますか?

ソリューション:

var array: [String] { 
    return ["The Year you pressed is \(currentYear)"] 
} 
+0

私はしばらくSwift evolutionを追跡しませんでしたが、現在のXcodeバージョンのリリースノートで何かを見つけることができます。通常、Appleは新しいXcodeをリリースするときにSwiftに加えられたすべての変更を一覧表示します。 – Alex

+0

しました。私はそこに理由を見つけることができない、または私はこれを修正する方法を知っているだろう。 – Jer

答えて

1

私はあなたがそれが何をしたいのか、あなたのコードが今までやったか表示されません。 arrayに値を割り当てるコードは、最初にView Controllerのインスタンスを作成したときに一度だけ起動し、再び起動しません。 (私は彼らがビューコントローラのプロパティですのでcurrentYeararrayのあなたの定義は、ビューコントローラの内部にあると仮定しています。)

あなたはarrayたびcurrentYearの変化の値を更新する場合は、あなたがdidSetを追加する必要がありますcurrentYearに機能する。このような何か:

import UIKit 

var array: [String] 
var currentYear 
{ 
    didSet 
    { 
    array = 
    [ 
     "The year you pressed is \(currentYear)", 
    ] 
    } 
} 
currentYear = 2000 
+0

これらはviewControllerまたは任意のクラスに含まれていません。それらは別のファイルにあり、他のviewcontrollerがアクセスできるクラスはありません。そしてそれは前にうまくいった、そうでなければ私はこれを投稿しないだろう 明らかにするには、currentYearsは変わる。しかし、配列はそうではありません。私は今あなたの答えを試みるでしょう – Jer

+0

あなたのソリューションはうまく動作します!私はゲッターを使うだけでした。 didSetではありません。 – Jer

1

:-) ..私の意見ではそれだけで試してみてもわからどこか..Iamない上書きされbecoz、そのためのタグ値を割り当てる前に、現在の変数や配列をクリアしてみてください

+0

それはどこかで上書きされているということは真実でした。 currentYearを{var currentYear:Int!}に変更しました。 }そしてそれはうまくいった。それがなぜ機能するのか分かりませんが、やはりうまくいきました。なぜ{var currentYear = 2000}が以前に働いたのかわからないし、今はしていない。いずれにせよ、あなたは助けました。ありがとう! – Jer

+0

私はまだコードで問題が残っていました。 Duncansのソリューションを試した後、うまくいきました。 – Jer

+0

あなたのコードは私のために働いた。それは選択された答え+1でなければなりません – ashokdy

関連する問題