Ios 如何修复语句的C样式?
对于下面发布的代码,用什么正确的方法修复语句的C样式 目前,我得到以下信息: C-style for语句已弃用,将在将来删除 Swift版本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
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)
}