代码之家  ›  专栏  ›  技术社区  ›  Burf2000

Swift 3:Swift 2.3中序列的替代方案是什么

  •  1
  • Burf2000  · 技术社区  · 8 年前

    因此Swift 3添加了序列,下面的代码在Swift 3中运行良好,但我正试图将其转换回Swift 2.3

    在swift 2.3中,我将用什么替换序列?

    func isWifiEnabled() -> Bool {
            var addresses = [String]()
    
            var ifaddr : UnsafeMutablePointer<ifaddrs>?
            guard getifaddrs(&ifaddr) == 0 else { return false }
            guard let firstAddr = ifaddr else { return false }
    
            for ptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
                addresses.append(String(cString: ptr.pointee.ifa_name))
            }
    
            freeifaddrs(ifaddr)
            return addresses.contains("awdl0")
        }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Burf2000    8 年前

    这起了作用 Swift 2.3 当然,这对Swift 3不起作用

     func isWifiEnabled() -> Bool {
        var addresses = [String]()
    
        var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
        guard getifaddrs(&ifaddr) == 0 else { return false }
    
        var ptr = ifaddr
        while ptr != nil { defer { ptr = ptr.memory.ifa_next }
             addresses.append(String.fromCString(ptr.memory.ifa_name)!)
        }
    
        var counts:[String:Int] = [:]
    
        for item in addresses {
            counts[item] = (counts[item] ?? 0) + 1
        }
    
        freeifaddrs(ifaddr)
        return counts["awdl0"] > 1 ? true : false
    }
    

    更新 我还注意到它列出了awdl0两次?也许是iOS 10.2的新功能