将值从闭包传递给其他类的正确方法是什么?

时间:2018-03-07 03:12:17

标签: ios arrays swift parse-platform

我希望从闭包中获取变量guestname的值,并将guestname定义为全局可行,然后将此值传递给使用它的其他类。但问题是,当我打开封闭之外的guestname它是空的但在里面我看到了实际价值。因此,当我将guestname传递给其他类时,它传递了nil引起的问题。将值赋给guestname并从关闭中获取此值的正确方法是什么?谢谢

queryUserID?.getFirstObjectInBackground(block: { (object, error) in
                if error == nil {
                guestname = object!.value(forKey: "username") as! String

                }
            })

2 个答案:

答案 0 :(得分:1)

问题是你的关闭会执行异步任务,所以显然你不会得到你的" guestname"变量在外面。这是完成块发挥作用的地方。您可以为闭包编写完成块并返回获取的结果。

看看这个stackoverflow post,它解释了你的场景,并教你如何为你的闭包写一个完成块。我希望这有帮助。

答案 1 :(得分:1)

我认为你必须像所有完成块那样从封闭本身传递数据

queryUserID?.getFirstObjectInBackground() { [weak CLASS] (object, error) in
    if let unwrappedObject = object as? String,
        error == nil {
            guestname = unwrappedObject.value(forKey: "username")
            CLASS?.passData(guestname)
    }
}