我正在将我的Swift代码从版本2迁移到3,并且存在以下问题:
参数标签'(count:,repeatedValue :)'与任何可用的重载都不匹配
我的代码
static func getWiFiAddress() -> String? {
var address: String?
var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
defer { ptr = ptr?.pointee.ifa_next }
let interface = ptr?.pointee
let addrFamily = interface?.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
let name = String(cString: (interface?.ifa_name)!)
var addr = interface?.ifa_addr.pointee
// issue while assigning to hostname variable
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
getnameinfo(&addr, socklen_t(interface.ifa_addr.memory.sa_len),
&hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST)
address = String.fromCString(hostname)
}
}
freeifaddrs(ifaddr)
}
if address == nil {
address = ""
}
return address
}
Run Code Online (Sandbox Code Playgroud)
在Swift 3中,他们没有充分理由改变了这个功能.你应该有
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
Run Code Online (Sandbox Code Playgroud)
请注意,不仅反转了论点,而且 repeatedValue: -> repeating:
| 归档时间: |
|
| 查看次数: |
2043 次 |
| 最近记录: |