Почему подстроки больше не работают в Swift 4?

один из модулей в моем проекте не компилируется, и я не могу понять, почему. По правде говоря, мне никогда не приходилось иметь дело с String.UnicodeScalarView, поэтому я понятия не имею, что это такое, и документы не очень полезны. Они все еще используют string[subscript] в документации Swift 4, но Xcode жалуется на то, что subscript устарел. Любые идеи? введите здесь описание изображения


person cyril    schedule 09.08.2017    source источник
comment
Пожалуйста, покажите ваш код и полное сообщение об ошибке в виде текста.   -  person OOPer    schedule 09.08.2017
comment
Возможный дубликат String, substring, Range, NSRange в Swift 4   -  person l'L'l    schedule 09.08.2017


Ответы (1)


Я столкнулся с точно такой же ошибкой точно в том же месте (тот же файл Mapbox). Я считаю, что проблема связана с тем, что новый тип подстроки отличается от типа String, который разбивает код в указанной вами строке. Я все еще пытаюсь понять новые документы. В любом случае, я рискнул и попробовал следующее, используя String.UnicodescalarView (с которым я тоже не сталкивался)

encodedString = String.UnicodeScalarView(encodedString[encodedString.index(after: currentIndex)..<encodedString.endIndex])

Имейте в виду, что, хотя это позволяет коду компилироваться и запускаться, это включает в себя разблокировку файла в модуле (чтобы разрешить редактирование), поэтому вы должны использовать его с осторожностью и обязательно обновлять модуль, как только Mapbox выпускает обновление. Это совсем не долгосрочное решение.

person Magnas    schedule 09.08.2017
comment
Спасибо за это! Я отмечу это как правильный ответ на данный момент. По крайней мере код компилируется :p - person cyril; 09.08.2017
comment
В Swift 4, когда вы индексируете String диапазоном, он создает SubString вместо UnicodeScalarView в Swift 3. Я всегда чувствовал, что строки в Swift ужасно спроектированы, и основные выпуски не очень помогают. Предложение SubString находится здесь: github. com/apple/swift-evolution/blob/master/proposals/ - person Code Different; 11.08.2017
comment
@Code Different - полностью согласен и спасибо за ссылку. - person Magnas; 12.08.2017