Подтвердить что ты не робот

Alamofire Xcode 8 Swift 3 приводит к ошибкам компиляции 786

Я использую Xcode 8.0 GM. Я создал однозадачное приложение по умолчанию с целевым назначением для развертывания, установленным в 9.0.

В моем подпикселе я нацеливаюсь на ветвь Swift 3 с кровоточащим фронтом:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target 'MyProject' do
    pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3'
end

Я запускаю pod install и получаю... Installing Alamofire (4.0.0-beta.2)... фантастический, никаких проблем. Я открываю MyProject.xcworkspace.

Появится сообщение:

конвертировать Alamofire в последний синтаксис

Я не могу попасть позже, потому что он говорит мне:

Xcode 8 не сможет создать целевой "Alamofire", и некоторые функции редактирования не будут работать должным образом, пока исходный код Swift в этой цели не будет преобразован.

Это нехорошо, я хочу его построить. Поэтому я нажал "Преобразовать". Это дает мне варианты:

конвертировать в Swift 3

Хорошо, что я хочу, Swift 3. Выглядит хорошо, я нажимаю "Далее".

выбрать цели

По умолчанию для этих 3 выбранных целей. Хорошо, я попал в следующий раз.

error 1 ошибка 2

Что в Боге Святое имя...

Я хочу использовать ветку красных лучей Alamofire swift3 в проекте Xcode 8, Swift 3, ориентированном на iOS 9.0. Где я ошибся и как я могу заставить это работать? FWIW Я получаю кучу ошибок, пытающихся использовать ветку Alamofire Swift 2.3, поэтому я знаю, что я делаю неправильно.

4b9b3361

Ответ 1

Обновление до последних Cocoapods (во время этого ответа: версия 1.1.0.beta.2) с помощью команды:

gem install cocoapods --pre казалось, решила проблему для моих обстоятельств.

Ответ 2

Мне удалось заставить его работать:

обновление:

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'PROJECT NAME HERE' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!
  pod 'Alamofire',
    :git => 'https://github.com/Alamofire/Alamofire.git',
    :branch => 'swift3'

end

pod update Alamofire

Он должен обновиться до 4.0.0-beta.2

При получении запроса есть несколько изменений:

старый:

Alamofire.request(URL_NAME_HERE, withMethod: .get).responseJSON { response in
     //Code here.
}

новый

Alamofire.request(URL_NAME_HERE, method: .get).responseJSON { response in
     //Code here.
}

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

Ответ 3

Теперь вы должны использовать ветвь master, так как там была объединена ветвь swift3. Кроме того, это нормально для Xcode Migrator, чтобы показать, что многие ошибки. Что он делает, скомпилировав код, считая его старой версией Swift, но так как он уже в Swift 3.0, следует ожидать ошибок. Наконец, Xcode просит вас преобразовать в современный синтаксис Swift, вероятно, потому, что вы не использовали последнюю версию Cocoapods для установки Alamofire.

NB: событие, хотя Cocoapods говорит вам использовать gem install cocoapods --pre, я предпочитаю использовать gem update cocoapods --pre. Кроме того, более старая версия Cocoapods остается и используется при использовании pod update. Проверьте, какую версию вы используете с помощью pod --version.

Ответ 4

Обновите pod до 1.1.0.rc, используя команду ниже.

sudo gem install cocoapods

используйте фрагмент дуги в конце.

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end

это помогает.

Ответ 5

Решение состоит в том, чтобы изменить ваш запрос из этого

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

к этому

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'master'

Ответ 6

Я решил проблему с помощью

pod 'Alamofire', '~> 4.0'

в файле подкачки. Мне пришлось приспособиться к более высокой минимальной цели развертывания.

Ответ 7

Я решил аналогичную проблему, используя:

platform :ios, '9.0'
use_frameworks!
target 'PROJECT NAME HERE' do
pod 'Alamofire'
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

Ответ 8

У меня была такая же проблема, но я удалил cocoapods, удалил alamofire, а затем обновил мои cocoa pods до 1.1.0.beta.2, а затем использовал ветвь Swift3 из Alamofire в моем файле pod

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3-rebased'

открыл файл Project.xcworkspace, и все ошибки компиляции для Alamofire исчезли.

Ответ 9

Не уверен, что это поможет кому угодно, но на всякий случай. Я попытался добавить Alamofire к образцу быстрого приложения на Xcode 8.0 GM, используя автономное приложение CocoaPods. Я продолжал получать Convert в swift 2.3 или 3.0 окно.. но потом я попытался из командной строки обновить pod, и это сработало. Не знаю, почему.. Я предполагаю, что основные команды для автономного приложения одинаковы. Поэтому не уверен, что изменило ситуацию. В любом случае после 30 минут расточительного времени работает шахта.

CocoaPods автономный снимок экрана для Mac

Это скриншот командной строки.. тот же файл pod

введите описание изображения здесь

Ответ 10

Вам нужно использовать версию 4.0 pod 'Alamofire', '~> 4.0' обратите внимание на необходимость использования CocoaPods 1.1.