我有一个名为currentYear的变量,默认设置为2000。currentYear是字符串数组中的一个变量,因此字符串知道是哪一年。这是一个没有类的文件。这些值是全局可访问的。

import UIKit

var currentYear = 2000

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

]

在viewcontroller中,我有一些按钮,上面的标签与它包含的年份相同:2013年、2014年、2015年和2016年。当按下按钮时,它将转到另一个viewcontroller。
import UIKit

class ViewController: UIViewController {

    @IBAction chooseYearBtnPressed(sender: AnyObject) {

        currentYear = sender.tag

        print(array)

        performSegueWithIdentifier("CustomSegue", sender: nil)

    }


}

在最近的xcode更新之前,这工作得很好。每当按下按钮时,加载的数组与新值的当前年份相同。现在没有了。在给currentYear赋值之后,数组中的currentYear仍然是2000。
我怎样才能解决这个问题,所以currentyear仍然会根据我传递的新值进行更改?
解决方案:
var array: [String] {
    return ["The Year you pressed is \(currentYear)"]
}

最佳答案

我看不出你的代码是怎么做到你想做的事情的。第一次创建视图控制器实例时,为array赋值的代码会触发一次,而不是再次触发。(我假设currentYeararray的定义在视图控制器中,因此它们是视图控制器的属性。)
如果要在currentYear的值每次更改时更新array,则应向currentYear添加一个didset函数。像这样的:

import UIKit

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

关于arrays - 自从新的xcode更新以来数组未更改-swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36176489/

10-10 16:12