【问题标题】:Data conflicts - Swift数据冲突 - 斯威夫特
【发布时间】:2021-05-19 07:39:09
【问题描述】:

我是 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
}

【问题讨论】:

    标签: swift database networking fetch vpn


    【解决方案1】:

    你需要一个完成,因为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)
    } 
    

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      • 2016-02-08
      • 2017-11-13
      • 2015-08-19
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多