быстрое падение, когда адрес getcurrentip: FixedWidthInteger.init <A> - PullRequest
0 голосов
/ 03 апреля 2019

Я обнаружил эту ошибку, когда пытался получить IP-адрес через Wi-Fi. После установки ткани я получил эту ошибку

0  MY_APP                      0x1020e538c specialized FixedWidthInteger.init<A>(_:radix:)
 (My_Screen.swift)

После нахождения ошибки метода я нашел следующую строку:

если addrFamily == UInt8 (AF_INET) || addrFamily == UInt8 (AF_INET6) , связанный с FixedWidthInteger:

публичная структура UInt8: FixedWidthInteger, UnsignedInteger

Я не знаю, почему возникла эта проблема. кто-нибудь может помочь?

Вот мой полный код, чтобы получить текущий IP-адрес

func getIPAddress() -> 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) {

                    if let name = String(cString: (interface?.ifa_name)!) as String?, name == "en0" {
                        var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
                        getnameinfo(interface?.ifa_addr, socklen_t((interface?.ifa_addr.pointee.sa_len)!), &hostname, socklen_t(hostname.count), nil, socklen_t(0), NI_NUMERICHOST)
                        address = String(cString: hostname)
                    }
                }
            }
            freeifaddrs(ifaddr)
        }
        return address
    }

ПРИМЕЧАНИЕ ОБНОВЛЕНИЯ: У меня 4 устройства ios 12.1 + 1 устройство ios 12.2, только 1 устройство ios 12.1 + устройство ios 12.2 сбой, 3 других устройства работают нормально.

...