online objective convert swift2 swift3 xcode8 swift-converter

swift2 - objective - El compilador Swift confunde la versión 2 y 3



convert swift to objective c (3)

Creo que sé cuál es el problema. Has convertido directamente todos los archivos de Swift2.0 a Swift3 . No funcionará de esa manera. Sugiero que elimine los pods y clone la rama Swift3 de esto (que creo que está usando) y copie el directorio fuente a su proyecto por ahora, ya que no dice qué versión de ese repositorio es swift-3 utilizable. Debería resolver su problema. :)

Instalé un cocoapod en un proyecto y ejecuté el convertidor para cambiarlo a Swift 3.

El problema es que el compilador cree que estoy usando Swift 2, y está cometiendo errores en la sintaxis correcta de Swift 3 (un enorme error de 129). Por ejemplo:

internal enum Error: ErrorProtocol { case noCentralManagerSet case busy case interrupted }

Lanza el use of undeclared type ''ErrorProtocol'' .

¿Qué está mal?

El código de Swift 3 que escribí no arroja errores de compilación.

Aquí está la salida de xcodebuild -showsdks :

2016-07-01 14:16:05.850 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WebDevSupport.xcplugin'' not present in DVTPlugInCompatibilityUUIDs 2016-07-01 14:16:05.864 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WebDevelopment.xcplugin'' not present in DVTPlugInCompatibilityUUIDs 2016-07-01 14:16:05.911 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WakaTime.xcplugin'' not present in DVTPlugInCompatibilityUUIDs 2016-07-01 14:16:05.944 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Rayrolling.xcplugin'' not present in DVTPlugInCompatibilityUUIDs 2016-07-01 14:16:05.967 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/CocoaPods.xcplugin'' not present in DVTPlugInCompatibilityUUIDs 2016-07-01 14:16:05.997 xcodebuild[30824:2848916] [MT] PluginLoading: Required plug-in compatibility UUID 1637F4D5-0B27-416B-A78D-498965D64877 for plug-in at path ''~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin'' not present in DVTPlugInCompatibilityUUIDs OS X SDKs: OS X 10.12 -sdk macosx10.12 iOS SDKs: iOS 10.0 -sdk iphoneos10.0 iOS Simulator SDKs: Simulator - iOS 10.0 -sdk iphonesimulator10.0 tvOS SDKs: tvOS 10.0 -sdk appletvos10.0 tvOS Simulator SDKs: Simulator - tvOS 10.0 -sdk appletvsimulator10.0 watchOS SDKs: watchOS 3.0 -sdk watchos3.0 watchOS Simulator SDKs: Simulator - watchOS 3.0 -sdk watchsimulator3.0


Puede establecer la versión de Swift para cada objetivo:

Su proyecto probablemente se configuró en Yes .

El SDK no tiene parte en el proceso de compilación.


Dos cosas me ayudan a manejar casos como estos.

Debido a que Xcode abre automáticamente proyectos anteriores que nunca se cerraron si abres el Proyecto A en Xcode 7, entonces abre Xcode 8 para comenzar algo nuevo. Xcode 8 también abrirá ese mismo Proyecto A. Entonces, de hecho, debes cerrar el proyecto A en Xcode 8 o bien obtendrá toneladas de errores y podría pensar que está trabajando en Xcode 7 porque el Proyecto A está abierto. En este punto, el Proyecto A está abierto en Xcode 7 y Xcode 8.

También projectName - Swift 2 mi carpeta de proyecto projectName - Swift 2 luego la duplico y le doy el nombre `projectName - Swift 3.

Por supuesto, tenemos control de versiones, pero para estar a salvo me gusta tener dos carpetas separadas para Swift 2/3 porque las cosas pueden volverse locas con el mismo proyecto abierto en dos versiones de Xcode.

Como también tiene que decirle a Terminal que use directorios separados para las instalaciones de pod, es más seguro porque no hay superposición.