从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..