我正在尝试在Swift 3中建立一个我已经在Swift 2中拥有的范围,但是它一直给我这个错误: String may not be indexed with 'Int', it has variable size elements
String may not be indexed with 'Int', it has variable size elements
这是我的代码:
let range = expireRange!.startIndex.advancedBy(n: 7) ..< expireRange!.startIndex.advancedBy(n: 16)
expiredRange是一个 Range<Index>?
Range<Index>?
在Swift 2中,我有:
let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
在Swift 3中,“集合移动其索引”,请参阅 关于Swift进化的集合和索引的新模型。
这是字符串范围和索引的示例:
let string = "ABCDEFG" if let range = string.range(of: "CDEF") { let lo = string.index(range.lowerBound, offsetBy: 1) let hi = string.index(range.lowerBound, offsetBy: 3) let subRange = lo ..< hi print(string[subRange]) // "DE" }
的
public func index(_ i: Index, offsetBy n: IndexDistance) -> Index
在字符串上调用方法,以从范围(lower/upperBound现在具有属性而不是 start/endIndex)中计算新索引。
lower/upperBound
start/endIndex