swift 无法将类型 'in_addr_t'(又名 'UInt32')的值转换为预期的参数类型 'UnsafeMutablePointer<in_addr_t>!'
swift Cannot convert value of type 'in_addr_t' (aka 'UInt32') to expected argument type 'UnsafeMutablePointer<in_addr_t>!'
我尝试将函数从 objective c 添加到 swift,就像这里 一样,我将调用方法转换为 Swift,如下所示。但是我收到错误消息:无法将类型 'in_addr_t'(又名 'UInt32')的值转换为预期的参数类型 'UnsafeMutablePointer!' 此行:let r: Int
func getGatewayIP() -> String {
var ipString: String? = nil
let gatewayaddr: in_addr
let r: Int = getdefaultgateway((gatewayaddr.s_addr))
if r >= 0 {
ipString = "\(inet_ntoa(gatewayaddr))"
print("default gateway : \(ipString)")
}
else {
print("getdefaultgateway() failed")
}
return ipString!
}
您必须将 gatewayaddr.s_addr
的 地址 作为 inout 参数传递
&
。 gatewayaddr
也必须初始化:
var gatewayaddr = in_addr()
let r = getdefaultgateway(&gatewayaddr.s_addr)
注意字符串插值
ipString = "\(inet_ntoa(gatewayaddr))"
无法将 C 字符串转换为 Swift String
,
你必须打电话给 String(cString:)
。还有
return ipString!
如果无法确定网关,将会崩溃。
安全版本示例:
func getGatewayIP() -> String? {
var gatewayaddr = in_addr()
let r = getdefaultgateway(&gatewayaddr.s_addr)
if r >= 0 {
return String(cString: inet_ntoa(gatewayaddr))
} else {
return nil
}
}
if let gateway = getGatewayIP() {
print("default gateway", gateway)
} else {
print("getGatewayIP() failed")
}
我尝试将函数从 objective c 添加到 swift,就像这里 一样,我将调用方法转换为 Swift,如下所示。但是我收到错误消息:无法将类型 'in_addr_t'(又名 'UInt32')的值转换为预期的参数类型 'UnsafeMutablePointer!' 此行:let r: Int
func getGatewayIP() -> String {
var ipString: String? = nil
let gatewayaddr: in_addr
let r: Int = getdefaultgateway((gatewayaddr.s_addr))
if r >= 0 {
ipString = "\(inet_ntoa(gatewayaddr))"
print("default gateway : \(ipString)")
}
else {
print("getdefaultgateway() failed")
}
return ipString!
}
您必须将 gatewayaddr.s_addr
的 地址 作为 inout 参数传递
&
。 gatewayaddr
也必须初始化:
var gatewayaddr = in_addr()
let r = getdefaultgateway(&gatewayaddr.s_addr)
注意字符串插值
ipString = "\(inet_ntoa(gatewayaddr))"
无法将 C 字符串转换为 Swift String
,
你必须打电话给 String(cString:)
。还有
return ipString!
如果无法确定网关,将会崩溃。
安全版本示例:
func getGatewayIP() -> String? {
var gatewayaddr = in_addr()
let r = getdefaultgateway(&gatewayaddr.s_addr)
if r >= 0 {
return String(cString: inet_ntoa(gatewayaddr))
} else {
return nil
}
}
if let gateway = getGatewayIP() {
print("default gateway", gateway)
} else {
print("getGatewayIP() failed")
}