首页 > 解决方案 > 非封闭访问时变量的值发生变化

问题描述

我写了下面的代码,当从关闭中访问时,变量“total”的值变回了初始化值,即 4

func getTotal() -> Int{

   let task = totalDB.observe(.value) { (snapshot) in
        if let data = snapshot.value as? Dictionary<String,AnyObject> {
            let jsonData = JSON(data)

            print("\n\n\n\n",jsonData,"\n\n\n\n\n")
            print(self.total,"\n\n")
            self.total=jsonData["Total"].intValue

        }
    }

return total

}

我初始化了变量:

    var total:Int = 4

标签: iosswiftclosures

解决方案


如果你问为什么 getTotal() 返回的值可能与闭包中的值不同,这几乎可以肯定是因为函数在闭包中的代码执行之前返回。self.total=jsonData...您可以在 Xcode 中通过在该行上设置一个断点并在该行上设置另一个断点来确认这一点,return total然后查看哪个断点首先被击中。


推荐阅读