【问题标题】:What is the right way to pass the value get from closure to other class?将值从闭包传递到其他类的正确方法是什么?
【发布时间】:2018-08-15 01:24:13
【问题描述】:

我想从闭包中获取变量guestname 的值,并将guestname 定义为全局病毒,然后将此值传递给使用它的其他类。但问题是,当我在闭包外打印出guestname 时,它是空的,但在里面我看到了实际值。因此,当我将 guestname 传递给其他类时,它传递 nil 会导致问题。将值分配给guestname 并使该值脱离封闭的正确方法是什么?谢谢

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

                }
            })

【问题讨论】:

  • 我尝试添加完成处理程序,但仍然先是空值,然后再分配值..

标签: ios arrays swift parse-platform


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我认为您必须像所有完成块一样从闭包本身传递数据

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2018-06-13
      • 2011-01-22
      • 2016-12-16
      • 2021-11-22
      相关资源
      最近更新 更多