2016-03-23 115 views
1

我有一個名爲currentYear的變量,默認情況下設置爲2000。 currentYear是我的字符串數組中的變量,所以字符串知道它是哪一年。這是一個沒有課程的文件。這些值是全球可訪問的。自從新的xcode更新後數組不會更改 - swift

import UIKit 

var currentYear = 2000 

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

] 

在視圖控制器我有標記,等於它所包含的一年按鈕:2013年,2014年,2015年和2016年,當按下按鈕,它進入另一個視圖控制器。

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進化一段時間,但也許您可以在當前Xcode版本的發行說明中找到某些內容。通常Apple會在發佈新的Xcode時列出對Swift所做的所有更改。 – Alex

+0

我做到了。雖然找不到原因,或者我知道如何解決這個問題。 – Jer

回答

1

我沒有看到你的代碼是如何做過你想要做什麼。當您第一次創建視圖控制器的實例時,您的代碼會將值賦給array,而不是再次。 (我假設你的currentYeararray定義視圖控制器內部,他們是視圖控制器的性能。)

如果你想array每次currentYear的值變化更新,你應該添加didSet函數爲currentYear。事情是這樣的:

import UIKit 

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

它們不在viewController或任何類中。他們在一個單獨的文件中沒有/可以被其他視圖控制器訪問的類。它確實工作之前,否則我不會發布此 要清楚,currentYears會改變。但是陣列沒有。我現在會嘗試你的答案 – Jer

+0

你的解決方案工作的很好!我只需要使用吸氣劑。不是一個didSet。 – Jer

1

嘗試清除當前變量和數組爲它分配的標記值,becoz在我看來,這是壓倒一切的地方..Iam不知道,雖然只是給一個嘗試之前.. :-)

+0

它在某處是壓倒性的。我將currentYear更改爲{var currentYear:Int! }和那工作。我不知道爲什麼這個工作,但它仍然工作。我也不知道爲什麼{var currentYear = 2000}之前工作,現在不工作。無論哪種方式,你的幫助。謝謝! – Jer

+0

我後來在代碼中遇到了問題。嘗試鄧肯解決方案後,它工作得很好。 – Jer

+0

你的代碼爲我工作。它應該是選定的答案+1 – ashokdy