Ios 如何修复语句的C样式?

Ios 如何修复语句的C样式?,ios,swift,swift2,Ios,Swift,Swift2,对于下面发布的代码,用什么正确的方法修复语句的C样式 目前,我得到以下信息: C-style for语句已弃用,将在将来删除 Swift版本 var-ifaddr:UnsafeMutablePointer=nil 如果getifaddrs(&ifaddr)==0{ //警告 for(var ptr=ifaddr;ptr!=nil;ptr=ptr.memory.ifa\u next){ //做些事情。。。 } } 您可以将for循环转换为,而循环: var ptr = ifaddr while p

对于下面发布的代码,用什么正确的方法修复语句的C样式

目前,我得到以下信息:

C-style for语句已弃用,将在将来删除 Swift版本

var-ifaddr:UnsafeMutablePointer=nil
如果getifaddrs(&ifaddr)==0{
//警告
for(var ptr=ifaddr;ptr!=nil;ptr=ptr.memory.ifa\u next){
//做些事情。。。
}
}

您可以将
for
循环转换为
,而
循环:

var ptr = ifaddr
while ptr != nil {
    // Do stuff
    ptr = ptr.memory.ifa_next
}

这是一个适合我的版本

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

从Swift 3开始,您可以对广义循环使用
序列
,例如 就像遍历一个“链表”。在这里:

var-ifaddr:UnsafeMutablePointer?
如果getifaddrs(&ifaddr)==0{
如果让firstAddr=ifaddr{
对于顺序中的ptr(第一个:firstAddr,下一个:{$0.pointee.ifa_next}){
// ...
}
}
FreeIFADRS(ifaddr)
}

嘿,拉米斯,我的回答对你有帮助吗?如果您有任何其他问题,请告诉我。@JAL抱歉,我没有机会尝试,因为我正忙于其他问题。
var ptr = ifaddr
repeat {
   ptr = ptr.memory.ifa_next
   if ptr != nil {
      ...
   }
} while ptr != nil
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)
}