当前位置: 首页 > 面试题库 >

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

羊光辉
2023-03-14
问题内容

我有两个快速文件:

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


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 我一直在搜索很多东西,但我仍然不知道如何在python中访问来自不同类的变量。在这种情况下,我想访问变量从类类。 这是我的代码。 问题答案: 从本质上讲,你的问题有一个简单的答案。“如何从对象X获取值?” 对于任何对象,答案都是相同的:你可以通过询问对象X来获得答案。为此,你所需要做的就是获取对该对象的引用,然后直接访问该属性。 从其他页面访问数据 在你的情况下,中的代码需要引用,以便

  • 问题内容: 我正在尝试创建一个JLabel数组,当单击它们时,所有这些标签都应该变为不可见。当试图通过需要访问用于声明标签的循环的迭代变量的内部类设置鼠标侦听器时,就会出现问题。代码是不言自明的: 我以为我可以通过使用内部方法中的(或代替)内部调用来克服此问题,但我一直无法弄清楚。 编译错误是:从内部类内部访问局部变量i;需要宣布为最终` 我敢肯定,答案一定是我从未想过的愚蠢之举,或者我犯了一些小

  • 问题内容: 我有一个main.c,其全局变量名为。在main()中,我启动一个pthread,它侦听一个TCP连接并通过(progserver.c)运行该线程。意味着,该线程将永远不会返回。在main()中,输入rm.c(RM =资源管理器)中的函数。在rm.c中,我在pthread的progserver.c中读取了此变量的内容(两者均可通过进行访问)。 因此,问题是,当我在pthread中写入并

  • 我正在尝试将我用Python制作的游戏移植到Java。在Python版本中,我将所有的方法和变量都放在一个“类”中,玩家是这样的字典: 游戏派克 然后分别添加玩家的数据值: 在Java版本中,我有一个单独的类用于定义玩家对象,以及游戏的主方法。 例如(这是一个小版本): 游戏java(省略返回) 游戏者java(省略返回) 假设,当要编译的两个类一起编译时,程序将能够运行,因为主变量是公共变量,并

  • 问题内容: 问题:如何在子项中显示父变量?预期结果将回显“父母bb” 问题答案: 该变量是继承的并且不是私有的,因此它是当前对象的一部分。 以下是其他信息,可应您的要求提供有关使用的更多信息: 当您要向父类的方法 添加其他 功能时使用。例如,想象一个类: 现在,假设我们要创建一种同时具有导航器的新型飞机。您可以扩展__construct()方法以添加新功能,但仍可以使用父级提供的功能: 这样,您可

  • 问题内容: 在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我了解了无法访问方法的局部变量的部分,但我想知道为什么外部类变量可以访问? 我的理解是,由于内部类与外部类绑定,因此只要父级可用,子级就可以访问其父级变量。我对么? 问题答案: 假设您的外部类在内部类的范围内(非静态)被称为,以获取该字段。 例如, 其中Outer是类的名称,并标识该字段。 您也可以直接抓取它,但是如果由于阴影