2017-01-11 5 views
1

So Swift 3 Sequenzen fügt der folgende Code in Swift 3 jedoch gut funktioniert Ich versuche, es zu konvertieren zurück zu Swift 2.3Swift 3: Was ist die Alternative für Sequenz in Swift 2.3

Was würde ich mit ersetzen Sequenz in schnellen 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

http://stackoverflow.com/a/25627545/1187415 hat Code, um alle Schnittstellen für Swift 2 und 3 zu zählen. –

Antwort

1

Dieser arbeitete für Swift 2.3 aber zweimal natürlich nicht funktionieren für 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 
} 

Aktualisiert Ich habe auch bemerkt, dass es die Auflistung awdl0? Vielleicht eine neue Sache zu iOS 10.2

+1

Dies wird eine Warnung geben "C-style für Anweisung ist veraltet ... " –

+0

Yeah versuchte herauszufinden, wie man das loswerden kann – Burf2000

+1

Sie können eine while-Schleife verwenden, wie in obigem Link. –

Verwandte Themen