Swift 3で既に持っていた範囲をSwift 2にしようとしていますが、このエラーが発生し続けます: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>?
Swift 2、私は持っていた:
let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
Swift 3、「コレクションはインデックスを移動します」を参照してください。 コレクションとインデックスの新しいモデル on Swift evolution。
文字列の範囲とインデックスの例を次に示します。
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
)。