数据冲突 - Swift

Data conflicts - Swift

我是 Swift 的新手,我正在从数据库中获取 VPN 证书以创建隧道。 问题是应该包含证书的变量(作为数据类型)正在调用一个正在获取证书的函数,但是证书需要时间才能出现,所以变量为空并发送到 VPN 配置,所以 VPN 赢了没用。

证书稍后出现。

我不太擅长解决这类问题, 我试图延迟获取我的证书的功能,但问题仍然存在(我知道这是一个不好的方法,因为网络速度可能会有所不同,我无法控制时间)

你能帮帮我吗?

func getCertificate() -> Data? {
    self.loading.onNext(true)
    var configData:String = ""
    
    Services.getCert(authToken: UserManager.currentUser?.token ?? "", method: vpnMethod, userID: String(UserManager.currentUser?.user_id ?? 0)) { (error, VpnModel, Int) in
        self.loading.onNext(false)
        
        if error == nil{
            if VpnModel?.cert_body == nil{
                configData = ""
            }else{
                configData = VpnModel?.cert_body ?? ""
            }
        }
    }
    
    let configurationData = Data(configData.utf8)
    print(String(decoding: configurationData, as: UTF8.self))
    return configurationData
}

您需要完成,因为 Services.getCert(...... 是异步的

func getCertificate(completion:@escaping (Data? ->())) {
    self.loading.onNext(true)
    var configData:String = "" 
    Services.getCert(authToken: UserManager.currentUser?.token ?? "", method: vpnMethod, userID: String(UserManager.currentUser?.user_id ?? 0)) { (error, VpnModel, Int) in
      self.loading.onNext(false) 
      if error == nil{
        if VpnModel?.cert_body == nil{
            configData = ""
        }else{
            configData = VpnModel?.cert_body ?? ""
        }
        let configurationData = Data(configData.utf8)
        print(String(decoding: configurationData, as: UTF8.self))
        completion(configurationData)
     }
   } 
}

打电话

getCertificate { res in
  print(res)
}