我有两个快速文件:
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个类(使用扩展名)。数据保存在类的实例中,而不是文件本身。
原文链接:https://www.f2er.com/swift/320310.html所以现在问题。通过调用Main(),您正在创建一个与您连接到Xib文件的实例无关的Main类的全新实例。这就是为什么值作为默认值出来。
您需要做的是找到一种方法来获得与Xib中相同实例的引用。不知道你的应用程序的架构,我很难提出建议。
有一个想法是,您可以使用View中的IBOutlet在Xib中添加对您的Main实例的引用。那么你可以简单地做self.main.getValue(),它将被调用在正确的实例上。