从swift 3.0删除语句的C样式,successor()不可用

任何人都可以帮我更新这个循环到swift 3.0。 帮助赞赏。 谢谢!

for var index = trimmedString.startIndex; index < trimmedString.endIndex; index = index.successor().successor() { let byteString = trimmedString.substringWithRange(Range(start: index, end: index.successor().successor())) let num = UInt8(byteString.withCString { strtoul($0, nil, 16) }) data?.appendBytes([num] as [UInt8], length: 1) } 

在Swift 3中,“集合移动他们的索引”,参见Swift进化的集合和指数的新模型 。 尤其是,

 let toIndex = string.index(fromIndex, offsetBy: 2, limitedBy: string.endIndex) 

将索引fromIndex推进2个字符位置,但fromIndex是它适合索引的有效范围,否则返回nil 。 因此循环可以写成

 let string = "0123456789abcdef" let data = NSMutableData() var fromIndex = string.startIndex while let toIndex = string.index(fromIndex, offsetBy: 2, limitedBy: string.endIndex) { // Extract hex code at position fromIndex ..< toIndex: let byteString = string.substring(with: fromIndex..