数据冲突 - 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)
}
我是 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)
}