2016-07-27 3 views
5

У меня есть проект с небольшим количеством кода, написанным на том, что я предполагаю, swift 2.3. Он содержит расширение приложения, также написанное в swift 2.3, и использует 2 Cocoapods: SwiftyJSON и MMWormhole. После загрузки Xcode 8.3 бета-версия migrator запустилась, и я оставил почти 100 ошибок компилятора в одном основном файле swift, содержащемся в SwiftyJSON.Использование Xcode8 с быстрым проектом 2.3, использующим cocoapods

В принципе, я хочу знать, есть ли способ, которым я могу работать в Xcode8 с учетом этих деталей. Я рад обновить свой собственный код до swift3, но я не контролирую cocoapods (MMWormHole находится в объективе C, поэтому я предполагаю, что Xcode преобразует его в любую версию Swift, которая ему нужна, поскольку она не испускает ошибок компилятора). Могу ли я сказать Xcode, чтобы использовать swift 2.3 во всем мире?

ответ

0

Из моего опыта при запуске рабочей области SDK должен спросить вас, хотите ли вы преобразовать свой код в Swift 3 или сделать это «позже». Просто выбрав позже, он не будет мигрировать ваш код в быстрый 3. Я должен предупредить вас, хотя я прошел через то же самое, и было почти невозможно работать назад только потому, что вы хотите использовать последний и самый большой Xcode 8. You «В конечном итоге вы столкнетесь с такими проблемами, как когда вы будете готовы нажать в хранилище приложений, и iTunesConnect не будет принимать файлы, которые ниже версии 10. Также, когда и если другой разработчик наследует ваш код, у них будут проблемы, если они используют более раннюю версию Xcode.

+0

я нажал на кнопку миграции нетерпеливо и обнаружили, что это трудно, если не невозможно, чтобы де-мигрирует, учитывая вы не совершили в удобно в последнее время .. –

2

Многие проекты с открытым исходным кодом Swift имеют ветви для Swift 3 или Swift 2.3 (см. this post для получения более подробной информации о популярном подходе). Я проверил SwiftyJSON, и у него, похоже, есть ветка для Swift 3, поэтому вы можете преобразовать свое приложение в Swift 3 и попробовать. Для того, чтобы использовать его, измените запись SwiftyJSON в вашей Podfile к:

pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git', :branch => 'swift3' 

Это до проекта обновления для каждой беты Xcode 8, поэтому он не может быть точно работает, но вполне вероятно, что там будет быть менее 100 ошибок.

Примечание: После обновления всех и исправления ошибок, связанных с ошибками, вы можете увидеть ошибку «Использовать устаревшую версию языка Swift». Это можно устранить, добавив шаг post_install в ваш подфайл (см. this GitHub issue) или обновив до CocoaPods 1.1.0.b.1 или выше (gem install cocoapods --pre).

6

Вы должны установить Use Legacy Swift Language Version в YES, чтобы использовать SWIFT 2.3 код в Xcode 8. Затем добавьте это в свой Podfile, чтобы все ваши объекты подкачки подтвердили то же самое.

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |configuration| 
     configuration.build_settings['SWIFT_VERSION'] = "2.3" 
    end 
    end 
end 

Надеюсь, это поможет.

+3

Это похоже на «конец» для многих – Cyrus

+0

Это было действительно полезно. Благодаря! – speedynomads

0

Добавьте следующее в конец вашего Podfile затем запустить pod install:

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |config| 
     config.build_settings['SWIFT_VERSION'] = '2.3' 
    end 
    end 
end 
Смежные вопросы