一尘不染

访问变量在不同的类中-Swift

swift

我有两个快速文件:

main.swiftview.swift

在main.swift中,variable (Int)最初设置为0

IBACtionI设置variable10,一切正常。

但是,如果我尝试通过 view 这样的简单调用variableview.swift进行
访问,则即使变量已更改,它也main().getValue()总是会获得010即使它在main.swift中也没有变化。

该方法getValue()main.swift 如下所示:

func getValue() -> Int {
return variable
}

编辑

这是代码(翻译成意大利语:D)

import Cocoa

class Main: NSObject {

    var variable: Int = 0

    func getValue() -> Int {
        return variable
    }

    @IBAction func updateVar(sender: AnyObject!) {
        variable = 10
    }
}

class View: NSView {
    override func drawRect(dirtyRect: NSRect) {
       println(Main().getValue()) //Returns always 0
    }
}

在此先感谢Alberto


阅读 253

收藏
2020-07-07

共1个答案

一尘不染

Swift中的“文件”和“类”之间有一个重要的区别。文件与类无关。您可以在一个文件中定义1000个类别,也可以在1000个文件中定义1个类别(使用扩展名)。数据保存在类的
实例 中,而不保存在文件本身中。

所以现在要解决问题。通过调用,Main()您正在创建该类的全新 实例
Main该实例与您已连接到Xib文件的实例无关。这就是为什么该值是默认值。

您需要做的是找到一种方法来引用与您的Xib中的实例 相同的 实例。在不了解您的应用程序体系结构的情况下,我很难提出建议。

一种想法是,您可以Main使用中的IBOutlet在Xib中添加对实例的引用View。然后,您可以简单地执行操作self.main.getValue(),它将在正确的实例上调用。

2020-07-07