Swift:通过全局文件进行永久变量更改

时间:2015-02-18 11:30:02

标签: ios xcode variables swift properties

我正在处理三个文件Menu.swiftMain.swiftGame.swift

在我的 Main.swift 中,我定义了变量 swipeNumber

class Main {
    var swipeNumber: Int = 0 {
        didSet{
            println("The new swipe number is \(swipeNumber)")
        }
    }
}

N.B。它是在类中,因此我可以引用其他文件中的变量,并且 didSet属性观察器将起作用 < / p>

如您所见,其初始值我认为)为0

然后,在我的 Menu.swift 中,我 Main.swift 主类中检索信息 >

let main = Main()

然后我有三个按钮触摸更改swipeNumber变量,根据哪个按钮是按压。

class Menu: UIViewController {

    @IBAction func pressedThreeSwipes(sender: AnyObject) {
        main.swipeNumber = 3
    }

    @IBAction func pressedFiveSwipes(sender: AnyObject) {
        main.swipeNumber = 5
    }

    @IBAction func pressedTenSwipes(sender: AnyObject) {
        main.swipeNumber = 10
    }

    //...

}

当我运行该程序时,我的属性观察者似乎工作打印消息,例如:

The new swipe number is 3
The new swipe number is 5
The new swipe number is 10

游戏类中的 ,(用于排查目的),我有另一个属性观察者,检查变量swipeNumber的整数< / strong>按下按钮test时:

class Game: UIView {

    let main = Main()

        func didMoveToView(view: UIView) {
        /* Setup your scene here */

        println("now")
        println("\(main.swipeNumber)"
        //Nothing happens here, suggesting that didMoveToView is failing

    }

    @IBAction func test(sender: AnyObject) {
        println("\(main.swipeNumber)")
    }

}

我的func test 会打印一个数字,但遗憾的是,该数字不是3,5或10 这是0

我认为问题在于 Main.swift 中的变量,但我不确定。

任何建议或“修正”,无论是快速还是冗长,都将非常感激。

谢谢,

威尔

2 个答案:

答案 0 :(得分:2)

您的班级Main有不同的实例,并且它们对于相同的属性都有不同的值。

您应该尝试使用Singleton模式(例如herehere)。

答案 1 :(得分:0)

当您调用Main()时,您正在创建一个新对象...强调NEW。它不知道你对同类型的其他对象做了什么。如果要在不同的地方使用相同的对象,则需要将其作为参数并将其传递给方法,而不是创建不同的对象。