Cadena, subcadena, Rango, NS Rango en Swift 4

Estoy usando el siguiente código para obtener unString subcadena de unNSRange:

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])
}

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

Cuando compilo con Swift 4 (Xcode 9b4), obtengo los siguientes errores para las dos líneas que declaranstart yend:

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

Estoy confundido, ya que no estoy usando un init.

¿Cómo puedo arreglar esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta