【问题标题】:Variables in SWIFTSWIFT 中的变量
【发布时间】:2018-05-06 15:25:47
【问题描述】:

我在 viewDidLoad() 中有变量,所以我不能通过 viewDidLoad() 中的变量在外部创建一个新变量。你能帮帮我吗?

override func viewDidLoad() {
    super.viewDidLoad()

    ref = Database.database().reference()

    ref?.child("user_clicks").child(userID).observeSingleEvent(of: .value, with: { (snapshot) in

        if let snapDict = snapshot.value as? Dictionary <String, AnyObject>{

        let user_counts = snapDict["Counts"] as! Int

        print(user_counts)

        self.label_usercounts.text = String(user_counts)

        }

    }) { (error) in
        print(error.localizedDescription)
    }

}

var counts = user_counts

【问题讨论】:

  • 我认为你需要做更多的研究:)

标签: ios swift variables var viewdidload


【解决方案1】:

viewDidLoad是一个方法,你在一个方法里面声明的所有东西都不能在它外面使用。

当你在方法的大括号内声明一个变量时,这个变量会在右大括号之后被销毁(static 变量除外)。

您需要了解 Swift 中的变量作用域,请阅读 documentation 了解相关内容。

UPDATE:根据你的cmets你需要实现的是统计一个方法被调用了多少次,可以使用static变量来实现。 p>

不幸的是,Swift 不支持static 变量,但您仍然可以这样做:

func functionWithCounter() {
    struct Counter { static var numberOfCalls = 0 }

    Counter.numberOfCalls += 1 // numberOfCalls is the number of times the method functionWithCounter() has been called.
}

如果您正在从数据库中读取点击次数的值,那么只需从那里读取它,它应该始终具有最近的点击次数,您不应该在方法中计算它们。

【讨论】:

  • 但是我怎么能从中得到它呢?不可能?
  • 你需要的场景是什么?
  • 我有一个按钮,当我点击它时会显示点击次数。我从数据库(FireBase)中获取 user_counts。现在我需要制作变量来显示来自数据库的点击次数。明白了吗?
  • 我不知道该怎么做。我是新手...嗯,非常感谢您的信息。
【解决方案2】:

您可以创建局部和全局变量。 全局变量可以从类内部的任何地方访问,即使您创建类的实例也可以访问它们。 但是,您在方法内部创建了无法从方法外部访问的局部变量。

您的答案的解决方案是在 viewDidload() 方法之外创建变量并在方法内部访问该变量,然后您可以分配值。

print 语句位于闭包内,因此您可以使用变量的 self 属性并分配值,稍后您可以在任何地方重用该变量及其值。

【讨论】:

  • 我无法将 ref 移到上面写着“预期声明”的类。
  • 我想你已经在类中声明了 ref 就像一个全局变量。我可以知道你想达到什么目的吗?
猜你喜欢
  • 2014-11-27
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 2020-06-12
  • 2020-01-17
  • 1970-01-01
  • 2016-06-26
  • 2014-11-27
相关资源
最近更新 更多