访问变量在不同的类 – Swift

前端之家收集整理的这篇文章主要介绍了访问变量在不同的类 – Swift前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个快速文件

main.swift和view.swift

在main.swift中,我有一个变量(Int)初始设置为0。

使用IBACtion我将该变量设置为10,一切都可以。

但是,如果我尝试从view.swift访问该变量,使用像main()。getValue()这样的简单调用,即使变量在main.swift中有变化,我总是保持0而不是10。

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

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
    }
}

提前致谢
阿尔贝托

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

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

您需要做的是找到一种方法来获得与Xib中相同实例的引用。不知道你的应用程序的架构,我很难提出建议。

有一个想法是,您可以使用View中的IBOutlet在Xib中添加对您的Main实例的引用。那么你可以简单地做self.main.getValue(),它将被调用在正确的实例上。

原文链接:https://www.f2er.com/swift/320310.html

猜你在找的Swift相关文章