У Apple есть старый пример, как получить диапазон всей строки, учитывая определенный диапазон символов:
Подсчет строк текста
Чтобы получить полный диапазон первой строки, они вызывают следующую функцию Objective-C:
[string lineRangeForRange:NSMakeRange(0, 0)]
Я пытался реализовать то же самое в Swift, но не могу заставить его работать, потому что сигнатура метода изменилась:
string.lineRange(for: NSRange(location: 0, length: 0))
выдает ошибку компилятора:
Argument type 'NSRange' (aka '_NSRange') does not conform to expected type 'RangeExpression'
RangeExpression
— это какой-то странный протокол, который я не совсем понял. Однако я решил, что Range<Bound>
ему соответствует, поэтому попробовал следующее:
let range = NSRange(location: 0, length: 0)
textView.string.lineRange(for: Range<Int>(range)!)
На этот раз я получаю еще одну ошибку компилятора:
Generic parameter 'R' could not be inferred
Я не смог найти общий параметр R
ни в Range
, ни в RangeExpression
.