gpt4 book ai didi

ios - 如何在 Swift 中将 IsConnected bool 返回到函数外部

转载 作者:行者123 更新时间:2023-11-30 11:39:27 24 4
gpt4 key购买 nike

我想将 var isConnected 返回到函数外部,以便在按钮中调用它(无论其是否正确)。

func checkReachability(isConnected: @escaping (Bool)->()) -> Bool {

var wifiMessage = ""
var isConnected = false

if currentReachabilityStatus == .reachableViaWiFi {
print("User is connected to the internet via wifi.")
let interface = CNCopySupportedInterfaces()
for i in 0..<CFArrayGetCount(interface) {
let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i)
let rec = unsafeBitCast(interfaceName, to: AnyObject.self)

if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] {
// connected wifi
wifiMessage = (String(describing: interfaceData["SSID"]))

SSIDAtual.text = "Conexão Atual:"+wifiMessage

StatusCon.text = "Status da Conexão: Conectado."

print(wifiMessage as Any)

isConnected = true
}

}

} else {
SSIDAtual.text = "Conexão Atual: Nenhuma Conexão."
StatusCon.text = "Status da Conexão: Desconectado."
print("There is no internet connection")

isConnected = false

}
print(isConnected)
return isConnected
}

我想在按钮操作中调用 while 内的 boolean 值:

@IBAction func LoginWEP(_ sender: Any) {
let SSID = SSIDText.text
let Pass = PassText.text
var cont:Int
cont = 0
let contf:Int
contf = 10

let wifiConfig = NEHotspotConfiguration(ssid: SSID!, passphrase: Pass!, isWEP: true)

wifiConfig.joinOnce = false

NEHotspotConfigurationManager.shared.apply(wifiConfig) { error in

if let error = error{
print("Error: " + (error.localizedDescription))

}else {
while cont < contf{
sleep(1)
cont += 1




}
print("Connected.")

}
}
self.view.endEditing(true)
}

最佳答案

根据任务的不同,您可以采取多种方式:

1)使用全局变量

var isConnected: Bool?

func checkReachability() {

var wifiMessage = ""

if currentReachabilityStatus == .reachableViaWiFi {

...

self.isConnected = true

}

} else {
...

self.isConnected = false

}

print(isConnected)
return isConnected
}

用法:

 NEHotspotConfigurationManager.shared.apply(wifiConfig) { error in

...

isConnected(self.isConnected)

}
}

2)闭包中的返回值

你的功能:

func checkReachability(completion: @escaping (_ isConnected: Bool) -> Void) {

var wifiMessage = ""

if currentReachabilityStatus == .reachableViaWiFi {
print("User is connected to the internet via wifi.")
let interface = CNCopySupportedInterfaces()
for i in 0..<CFArrayGetCount(interface) {
let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i)
let rec = unsafeBitCast(interfaceName, to: AnyObject.self)

if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] {
// connected wifi
wifiMessage = (String(describing: interfaceData["SSID"]))

SSIDAtual.text = "Conexão Atual:"+wifiMessage

StatusCon.text = "Status da Conexão: Conectado."

print(wifiMessage as Any)


completion(true)


}

}


} else {
SSIDAtual.text = "Conexão Atual: Nenhuma Conexão."
StatusCon.text = "Status da Conexão: Desconectado."
print("There is no internet connection")

completion(false)

}
}

用法:

checkReachability { (isConnected) in
//Your code
}

关于ios - 如何在 Swift 中将 IsConnected bool 返回到函数外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49409946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com