Chaîne, sous-chaîne, la Plage, le NSRange dans Swift 4

Je suis en utilisant le code suivant pour obtenir un String sous-chaîne à partir d'un NSRange:

func substring(with nsrange: NSRange) -> String? {
    guard let range = Range.init(nsrange)
        else { return nil }
    let start = UTF16Index(range.lowerBound)
    let end = UTF16Index(range.upperBound)
    return String(utf16[start..<end])
}

(via: https://mjtsai.com/blog/2016/12/19/nsregularexpression-and-swift/)

Quand je compile avec Swift 4 (Xcode 9b4), j'obtiens les erreurs suivantes pour les deux lignes qui déclarent start et end:

'init' is unavailable
'init' was obsoleted in Swift 4.0

Je suis confondu, car je ne suis pas à l'aide d'un init.

Comment puis-je résoudre ce problème?

OriginalL'auteur Koen | 2017-08-01