2016-03-22 3 views
4

Was ist der richtige Weg zu beheben C-Stil für die Aussage für den Code, der unten veröffentlicht ist?Wie C-style für Anweisung zu beheben?

Derzeit erhalte ich diese Warring:

C-Stil für Anweisung ist veraltet und wird in einer zukünftigen Version von Swift

var ifaddr : UnsafeMutablePointer<ifaddrs> = nil 
if getifaddrs(&ifaddr) == 0 { 
    // Warning 
    for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) { 
     // Do some stuff... 
    } 
} 
+0

Hey Ramis hat meine Antwort Ihnen geholfen? Bitte lassen Sie mich wissen, wenn Sie weitere Fragen haben. – JAL

+0

@JAL Sorry, aber ich hatte keine Chance, es zu versuchen, da ich mit anderen Problemen beschäftigt bin. – Ramis

Antwort

7

Sie könnten die for Schleife konvertieren entfernt werden in eine while Schleife:

3

Hier ist eine Version, die für mich funktioniert hat.

var ptr = ifaddr 
repeat { 
    ptr = ptr.memory.ifa_next 
    if ptr != nil { 
     ... 
    } 
} while ptr != nil 
0

Ab Swift 3 können Sie sequence für verallgemeinerte Loops verwenden, wie als eine "verknüpfte Liste" durchquert. Hier:

var ifaddr : UnsafeMutablePointer<ifaddrs>? 
if getifaddrs(&ifaddr) == 0 { 
    if let firstAddr = ifaddr { 
     for ptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) { 
      // ... 
     } 
    } 
    freeifaddrs(ifaddr) 
} 
Verwandte Themen