Можно ли использовать более короткую версию swift на cocoapod, когда проект построен в более высокой версии swift? - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужно обновить проект для запуска на swift 5, последний раз, когда кто-то обновлял проект, он был построен на swift 4. Поэтому я завершил обновление проекта Xcode, когда я пытаюсь скомпилировать, некоторые из моих какао-бобов говорят, что они используют Swift 5, но сами капсулы еще не созданы для 5. Что приводит к ошибкам компиляции.

Так что я думаю, что мне нужно сделать, это go через каждое меню сборки модуля и вручную установить версию swift в качестве последней версии swift, на которой был создан модуль. Это правильный способ исправить эту проблему? У меня будут какие-то последствия от этого?

PS Я узнал, что это нормально. И все же один из моих модулей должен быть встроен в swift 3, потому что он говорит, что одна из строк кода устарела в swift 4. Я обновлю это, когда выясню, что делать в этой ситуации, но если один из вас гуру хочу взять на себя инициативу в этом, который будет великим.

1 Ответ

0 голосов
/ 13 апреля 2020

Так что да, правильный способ решить эту проблему - go для каждого модуля, который может работать только на более низкой версии swift, и вручную изменить версию swift в меню сборки. Когда я запустил код автоматического обновления до swift 5, у меня возникла проблема, заключающаяся в том, что Xcode также изменил все модули на swift 5. Так как эти модули не могли работать на Swift 5, просто это приводило к ошибкам сборки.

Также в отношении моего примечания PS причина, по которой это произошло, заключалась в том, что одну из команд pods нужно было изменить на ту, которую они обновили в опциях установки.

Надеюсь, это поможет всем, кто сталкивался с этим проблема.

РЕДАКТИРОВАТЬ: Чтобы быть еще более точным в том, что происходит, это тот факт, что каждый раз, когда я запускаю pod install, есть несколько модулей, которые возвращаются к Swift 5, когда он должен быть запущен в Swift 4. Это связано с тем, что авторы модулей не установили параметр swift_version в качестве быстрой версии, которую модуль должен использовать. Это приводит к тому, что приложение не может быть скомпилировано с ошибками во время сборки.

, чтобы исправить это, добавьте этот код в ваш Podfile, и он будет каждый раз устанавливать версию swift вручную. Просто не забудьте удалить его для каждого модуля после их обновления, потому что вы перезапишете версию pod swift создателей (если они когда-нибудь захотят добавить ее)

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'KMPlaceholderTextView' || target.name == 'TagWriteView' || target.name == 'UILoadControl'
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.0'
      end
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...