Я обновлял часть своего старого кода и отвечал с помощью Swift 3, но когда я добрался до Swift Strings и Indexing, было больно понять вещи.
В частности, я пытался сделать следующее:
let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error
где вторая строка давала мне следующую ошибку
'advancedBy' недоступен: для продвижения индекса с помощью n шагов вызовите 'index (_: offsetBy:)' в экземпляр CharacterView, который создал индекс.
Я вижу, что String
имеет следующие методы.
str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)
Сначала это меня сбивало с толку, поэтому я начал играть с ними, пока не понял их. Я добавляю ответ ниже, чтобы показать, как они используются.