J'essaie de créer une plage dans Swift 3 que j'avais déjà dans Swift 2 mais cela continue de me donner cette erreur: String may not be indexed with 'Int', it has variable size elements
Voici mon code:
let range = expireRange!.startIndex.advancedBy(n: 7) ..< expireRange!.startIndex.advancedBy(n: 16)
expiredRange est un Range<Index>?
Dans Swift 2, j'avais:
let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
Dans Swift 3, "Les collections déplacent leur index", voir n nouveau modèle pour les collections et les indices on Swift evolution.
Voici un exemple pour les plages de chaînes et les indices:
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"
}
Le
public func index(_ i: Index, offsetBy n: IndexDistance) -> Index
est appelée sur la chaîne pour calculer les nouveaux indices à partir de la plage (qui a les propriétés lower/upperBound
maintenant au lieu de start/endIndex
).