2016-07-27 13 views
5

Ich habe ein Projekt mit einer leichten Menge an Code geschrieben, was ich davon ausnimmt, ist schnell 2.3 Es enthält und App-Erweiterung auch in Swift 2.3 geschrieben und verwendet 2 Cocoapods: SwiftyJSON und MMWormhole. Nach dem Download von Xcode 8.3 beta lief der Migrator und ich habe fast 100 Compiler-Fehler in der einen Haupt-Swift-Datei, die in SwiftyJSON enthalten ist.Mit Xcode8 mit einem schnellen 2.3-Projekt, das Cocoapods verwendet

Grundsätzlich möchte ich wissen, ob es eine Möglichkeit gibt, mit diesen Details in Xcode8 arbeiten kann. Ich bin glücklich, meinen eigenen Code zu swift3 zu aktualisieren, aber ich kontrolliere die Cocoapods nicht (MMWormHole ist in objective-C, also nehme ich an, dass Xcode das in die Version von Swift konvertiert, die benötigt wird, da es keine Compilerfehler ausgibt). Kann ich Xcode mitteilen, Swift 2.3 global zu verwenden?

Antwort

0

Aus meiner Erfahrung beim Starten des Arbeitsbereichs sollte das SDK Sie fragen, ob Sie Ihren Code in Swift 3 konvertieren oder "später" ausführen möchten. Wenn Sie sie später auswählen, wird Ihr Code nicht auf swift 3 migriert. Ich muss Sie jedoch warnen, dass ich dasselbe durchgemacht habe und es fast unmöglich war, rückwärts zu arbeiten, nur weil Sie den neuesten und besten Xcode 8 verwenden möchten Es kommt schließlich zu Problemen, wenn Sie beispielsweise zum App Store wechseln möchten und iTunesConnect keine Dateien akzeptiert, die niedriger als Version 10 sind. Auch wenn und wenn ein anderer Entwickler Ihren Code erbt, werden sie Probleme haben verwenden eine frühere Version von Xcode.

+0

i die Migration Taste ungeduldig angezapft und fand, dass es Sie, wenn nicht unmöglich, de-Migrate, da schwierig ist nicht verpflichtet, in eine praktisch letzte Zeit .. –

2

Viele Open-Source-Swift-Projekte verfügen über Verzweigungen für Swift 3 oder Swift 2.3 (Details zu einem beliebten Ansatz finden Sie unter this post). Ich habe SwiftyJSON überprüft und es scheint, dass es einen Zweig für Swift 3 gibt, also könnten Sie Ihre App in Swift 3 konvertieren und es ausprobieren. Um es zu benutzen, um den Eintrag SwiftyJSON ändern in Ihrem Podfile zu:

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

Es liegt an dem Projekt für jeden Xcode 8 Beta zu aktualisieren, so dass es nicht genau arbeiten kann, aber es ist wahrscheinlich, dass es weniger als 100 Fehler sein.

Hinweis: Möglicherweise wird nach der Aktualisierung von allem und der Behebung der Compiler-Fehler ein Fehler mit der Meldung "Alte Swift-Sprachversion verwenden" angezeigt. Dies kann behoben werden, indem Sie einen Schritt post_install zu Ihrer Poddatei hinzufügen (siehe this GitHub issue) oder indem Sie auf CocoaPods 1.1.0.beta.1 oder höher (gem install cocoapods --pre) aktualisieren.

6

Sie müssen Use Legacy Swift Language Version auf YES setzen, um SWIFT 2.3 Code in Xcode 8 zu verwenden. Dann fügen Sie dies in Ihre Podfile, um alle Ihre Pod-Ziele bestätigen das gleiche.

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 

Ich hoffe, es wird helfen.

+3

Das sieht aus und 'Ende' zu vielen – Cyrus

+0

Das war wirklich nützlich. Vielen Dank! – speedynomads

0

Folgendes Ende Ihres Podfile dann hinzufügen laufen 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