2017-07-19 49 views

Odpowiedz

14

Wreszcie dostałem go do pracy: Wszystko co musiałem zrobić, to umieścić ten skrypt w końcu Podfile:

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

zestaw Swift 4.0 dla wszystkich celów z wyjątkiem tych ram, które powinny być Swift 3.2

to co mam obecnie robi w projekcie

+0

również ze mną. ale za każdym razem trzeba naciskać kompilację, aby uzyskać efekt, a komunikat o błędzie zniknie. –

9

Jeśli używasz kilka strąków napisane w Swift 4, ale niektóre są Swift 3.2, oto sposób można określić wartość SWIFT_VERSION dla nich

swift_32 = ['Pod1', 'Pod2', 'Pod3'] # if these pods are in Swift 3.2 
swift4 = ['Pod4', 'Pod5', 'Pod6'] # if these pods are in Swift 4 

post_install do |installer| 

    installer.pods_project.targets.each do |target| 
     swift_version = nil 

     if swift_32.include?(target.name) 
      swift_version = '3.2' 
     end 

     if swift4.include?(target.name) 
      swift_version = '4.0' 
     end 

     if swift_version 
      target.build_configurations.each do |config| 
       config.build_settings['SWIFT_VERSION'] = swift_version 
      end 
     end 

    end 

end 
+2

To powinna być zaakceptowana odpowiedź, ponieważ umożliwia jej aktualizację, ponieważ biblioteki są aktualizowane na Swift 4. – MandisaW

7

projektowe Navigator> wybierz „Pods”> Wybierz Swift 3.2 Pod> "Ustawienia kompilacji"> Przewiń w dół, a następnie ustaw Swift Language Version na 3.2 w sekcji "Kompilator Swift - sekcja Język".

W ten sposób Xcode pokaże jeden problem z Buildtime. Poprosi cię o konwersję kodu źródłowego strąków na Swift 4. Nie rób tego. Kliknij ten problem> Odznacz "Przypomnij mi"> kliknij "Konwertuj później".

Projekt Navigator

Project Navigator

Ustawienia Zbuduj

Build Settings

+2

Najprostsza odpowiedź do tej pory (Y) –

+0

Uwielbiam tę odpowiedź, yo ma man – fullMoon

7

Tu jest o wiele mniej gadatliwy sposób ustawić strąków musisz 3.2 i zostawić wszystkie inne 4,0

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
     if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name 
      target.build_configurations.each do |config| 
       config.build_settings['SWIFT_VERSION'] = '3.2' 
      end 
     end 
    end 
end 

J zmodyfikuj tablicę w instrukcji if. wszystko inne domyślnie będzie ustawione na 4.0