один из модулей в моем проекте не компилируется, и я не могу понять, почему. По правде говоря, мне никогда не приходилось иметь дело с String.UnicodeScalarView
, поэтому я понятия не имею, что это такое, и документы не очень полезны. Они все еще используют string[subscript]
в документации Swift 4, но Xcode жалуется на то, что subscript
устарел. Любые идеи?
Почему подстроки больше не работают в Swift 4?
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
Спасибо за это! Я отмечу это как правильный ответ на данный момент. По крайней мере код компилируется :p
- person cyril; 09.08.2017
В Swift 4, когда вы индексируете
String
диапазоном, он создает SubString
вместо UnicodeScalarView
в Swift 3. Я всегда чувствовал, что строки в Swift ужасно спроектированы, и основные выпуски не очень помогают. Предложение SubString
находится здесь: github. com/apple/swift-evolution/blob/master/proposals/
- person Code Different; 11.08.2017
@Code Different - полностью согласен и спасибо за ссылку.
- person Magnas; 12.08.2017