In swift 3 you can no longer use advanced, successor or predecessor, instead you need to use
let indexAfter = someString.index(after: someIndex)
let indexBefore = someString.index(before: someIndex)
let anyOtherIndex = someString.index(someIndex, offsetBy: distance)
so your code should look like this
let index = (hasOverflow) ?
text.index(text.startIndex, offsetBy: expectedInputLength) :
text.index(text.startIndex, offsetBy: text.characters.count)
As a side note,
text.index(text.startIndex, offsetBy: text.characters.count)
Is actually the same as
text.endIndex
So you can use this instead
let index = (hasOverflow) ?
text.index(text.startIndex, offsetBy: expectedInputLength) :
text.endIndex