我已经找到了这个问题的解决方案,请参见下面的答案。
我定义了一个函数getGatewayInfo()
来获取网关 IP 地址并将其返回给调用者。print(NetworkUtility().getGatewayInfo())
但是当我从其他 VC调用这个函数时viewDidLoad
,它返回 nil。
从日志中,我可以看到gatewayIPAddress
已从 中获取值NWEndpoint
,即192.168.1.1
. 但是,它返回 nil 并打印出“未找到网关 IP 地址!”。你能给我一些提示我哪里做错了吗?
Gateway IP address is not found!
Gateway: 192.168.1.1
import UIKit
import Network
class NetworkUtility {
var gatewayIPAddress: String?
func getGatewayInfo() -> String {
let monitor = NWPathMonitor(requiredInterfaceType: .wifi)
monitor.pathUpdateHandler = { path in
let endpoint = path.gateways[0]
switch endpoint {
case .hostPort(let host, _):
self.gatewayIPAddress = host.debugDescription
print("Gateway: \(self.gatewayIPAddress!)")
default:
break
}
}
monitor.start(queue: DispatchQueue(label: "nwpathmonitor.queue"))
if let gatewayIPAddress = gatewayIPAddress {
return gatewayIPAddress
} else {
return "Gateway IP address is not found!"
}
}
}