在从API调用获取值后,使用getter-setter变量

问题描述 投票:0回答:2

我具有类似的功能。

@IBAction func btn_Login(_ sender: Any) {

        AuthenticateAndGoToMainScreen()

}

现在AuthenticateAndGoToMainScreen()方法中有一个API调用,在此我得到了token。现在,当我获得令牌时,我想导航到另一个屏幕。我无法在API调用中执行此操作,因为它引发了一个错误,即performWithSegue仅可在主线程中访问。

在主线程中提供performWithSegue也不起作用,因为当我导航到下一个屏幕并单击一个按钮时,它崩溃了。

所以我想吃点这样的东西。

@IBAction func btn_Login(_ sender: Any) {

        AuthenticateAndGoToMainScreen()
        if mytoken != "" {

         performSegueWithIdentifier..... 
        } 

}

在这种情况下,我在API调用的结果中获得令牌。但是我的疑问是..我怎么知道变量mytoken的值是否已更改,因此我的控件将再次返回到btn_Login函数,然后执行performSegueWith...

这可以通过getter-setter来实现。但是我不确定如何在此处实现...

ios swift getter-setter
2个回答
0
投票

您可以通过多种方式执行此操作,但简单的方法是在didSet上放置一个myToken,如下所示:

var myToken: String {
  didSet {
    performSegueWithIdentifier
  }
}

0
投票

使用属性观察器didSet并在主线程上调用performSegue..。像:

var myToken: String {
  didSet {
    DispatchQueue.main.async {
      self.performSegue(...)
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.