Xcode 10.2 конвертирует несколько целей в Swift 5: пытается компилировать некоторые классы, которые не являются частью цели - PullRequest
2 голосов
/ 26 марта 2019

У меня есть проект iOS Swift с несколькими целями.

Конвертировать первую цель в Swift 5 было легко.

Преобразуя вторую цель в Swift 5, Xcode 10.2 пытается скомпилировать файлы, которые явно существуют только в первой цели, и завершается неудачно (поскольку не компилирует все файлы первой цели и жалуется на неразрешенные идентификаторы).

Что я могу сделать, чтобы XCode компилировал только те файлы, которые являются частью цели при конвертации в Swift 5?

Как мне конвертировать мой проект в Swift 5?

Очистка папки Build и перезапуск Xcode 10.2 не помогают.

Ответы [ 3 ]

1 голос
/ 21 мая 2019

Я только что прошел этот процесс и смог найти довольно простое решение из подсказки в последнем предложении Руководства по миграции https://swift.org/migration-guide-swift5/

Когда я пытался конвертировать каждую цель по отдельностив моем проекте вторая цель потерпит неудачу из-за общего кода с первой целью, которая уже была преобразована.Решение состоит в том, чтобы создать новую схему, включающую все цели, которые необходимо перенести за один проход.

  1. Нажмите на кнопку схемы, чтобы получить раскрывающийся список, и выберите «Создать».Схема ... "

  2. Создайте схему, затем выберите ее в раскрывающемся списке и выберите" Редактировать схему ... "

  3. Подв разделе «Сборка» используйте кнопку «+», чтобы добавить все цели, которые необходимо преобразовать в схему.

  4. Создайте новую схему с текущей версией Swift, чтобы подтвердить, что всецели строятся правильно.

  5. Используйте Edit -> Convert -> "To Current Swift Syntax ...", чтобы начать преобразование

Это сработалодля меня в проекте с 15 целями с большим количеством общего кода Swift, который был в версии 4.0.

0 голосов
/ 27 марта 2019

Мне не ясно, в чем проблема, если вы можете отправить отчет об ошибке на http://bugreport.apple.com,, команда Apple свяжется с вами.

Обратите внимание, что существует миграцияруководство, которое вы можете найти полезным здесь: https://swift.org/migration-guide-swift5

0 голосов
/ 26 марта 2019

Я нашел обходной путь:

  1. Сброс проекта в состояние до преобразования.
  2. преобразовать цель с наименьшим количеством классов (не содержащих файлы в сообщении об ошибке с первой попытки)
  3. конвертировать цель в цель, включая все больше и больше файлов
  4. конвертировать тестовые задания

При таком подходе я смог преобразовать свой проект.

(См. Также комментарий Cœur, я думаю, что их ручное преобразование также будет работать)

...