无法使用类型为"(start:String.Index,end:String.Index)"的参数列表调用类型"Range <String.Index>"的初始值设定项

Cha*_*cha 3 string swift3

let greenHex = hex.substring(with: Range<String.Index>(start: hex.index(hex.startIndex, offsetBy: 2), end: hex.index(hex.startIndex, offsetBy: 4)))
Run Code Online (Sandbox Code Playgroud)

这是Swift3.0,hex是一个字符串,但是这段代码抛出一个错误,说:

无法使用类型为'(start:String.Index,end:String.Index)的参数列表调用类型'Range'的初始化程序

ozg*_*gur 6

Range.init(start:end:) 在Swift 3.0中删除了构造函数,因此您初始化如下的范围:

let range = hex.index(hex.startIndex, offsetBy: 2)..<hex.index(hex.startIndex, offsetBy: 4)
Run Code Online (Sandbox Code Playgroud)

返回类型的半开放范围<String.Index>.然后,您可以执行以下操作:

hex.substring(with: range)
Run Code Online (Sandbox Code Playgroud)