如何使用Swift中block outside block定义的全局变量值?
how to use the global variable value defined in block outside block in Swift?
我有一个全局定义的变量,当在 self.lastReading 的块内访问时,它没有获取块中定义的值。如何获取块中定义的值?
var lastReading = 0
Query.getFirstObjectInBackgroundWithBlock(
{(data:PFObject?,error:NSError?) -> Void in
var dataEntry = data!
var Reading: AnyObject! = dataEntry["reading"]!
self.lastReading = Reading.integerValue
})
编辑:lastReading 变量是 class.
中定义的全局变量
看起来像:
var lastReading = 0
在 class 中定义(最好添加上下文代码以了解它的定义位置)。如果是这种情况,您可能正在不同的线程中执行您的块/闭包。所以:
- 你设置 lastReading = 0
- 您在另一个线程中启动了一些耗时的任务。主线程(或线程 运行 该代码)立即继续执行。在块的末尾,您分配 lastReading.
- 如果您在块之后检查 lastReading,没有任何变化。仍然 == 0。那是因为 Main 线程立即执行并且 lastReading 没有改变。
我最好调用一个方法来更新块末尾的 lastReading:
var lastReading = 0
Query.getFirstObjectInBackgroundWithBlock(
{(data:PFObject?,error:NSError?) -> Void in
var dataEntry = data!
var Reading: AnyObject! = dataEntry["reading"]!
self.updatelastReading(Reading.integerValue)
})
我有一个全局定义的变量,当在 self.lastReading 的块内访问时,它没有获取块中定义的值。如何获取块中定义的值?
var lastReading = 0
Query.getFirstObjectInBackgroundWithBlock(
{(data:PFObject?,error:NSError?) -> Void in
var dataEntry = data!
var Reading: AnyObject! = dataEntry["reading"]!
self.lastReading = Reading.integerValue
})
编辑:lastReading 变量是 class.
中定义的全局变量看起来像:
var lastReading = 0
在 class 中定义(最好添加上下文代码以了解它的定义位置)。如果是这种情况,您可能正在不同的线程中执行您的块/闭包。所以:
- 你设置 lastReading = 0
- 您在另一个线程中启动了一些耗时的任务。主线程(或线程 运行 该代码)立即继续执行。在块的末尾,您分配 lastReading.
- 如果您在块之后检查 lastReading,没有任何变化。仍然 == 0。那是因为 Main 线程立即执行并且 lastReading 没有改变。
我最好调用一个方法来更新块末尾的 lastReading:
var lastReading = 0
Query.getFirstObjectInBackgroundWithBlock(
{(data:PFObject?,error:NSError?) -> Void in
var dataEntry = data!
var Reading: AnyObject! = dataEntry["reading"]!
self.updatelastReading(Reading.integerValue)
})