Я не понимаю проблемы, с которой Xcode сталкивается в этой строке:
iteration.template = template[iterationSubstring.endIndex...substring.startIndex]
template
является String
, а iterationSubstring
и substring
являются Substring
с template
. Xcode выделяет открывающую квадратную скобку следующим сообщением:
Подстрочный индекс 'subscript (_ :)' требует, чтобы типы 'Substring.Index' и 'Int' были эквивалентны
Сообщение об ошибке не имеет никакого смысла для меня. Я пытаюсь получить Substring
, создав Range<String.Index>
с индексом [template.startIndex...template.endIndex]
. Как это связано с Int
? И почему этот шаблон работает в другом месте?
Код игровой площадки Xcode, воспроизводящий проблему:
import Foundation
let template = "This is an ordinary string literal."
let firstSubstringStart = template.index(template.startIndex, offsetBy: 5)
let firstSubstringEnd = template.index(template.startIndex, offsetBy: 7)
let firstSubstring = template[firstSubstringStart...firstSubstringEnd]
let secondSubstringStart = template.index(template.startIndex, offsetBy: 10)
let secondSubstringEnd = template.index(template.startIndex, offsetBy: 12)
let secondSubstring = template[secondSubstringStart...secondSubstringEnd]
let part: String = template[firstSubstring.endIndex...secondSubstring.startIndex]
В конце концов у меня есть строка шаблона и две ее подстроки. Я хочу получить String
в диапазоне от конца первого Substring
до начала второго Substring
.