Después de actualizar a Xcode 9, intenté crear uno de mis proyectos.
Utilizo el pod de FacebookLogin . Tengo un error del compilador en FacebookLogin / LoginButton.swift
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
En la configuración de compilación de mi objetivo, la versión de idioma Swift está configurada en Swift 3.2 .
Supongo que debo esperar a que Facebook actualice su pod. ¿O alguna otra sugerencia?
Gracias !
Respuestas:
Actualizar:
Solución también probada y funcionando en Swift 5 y Xcode 11.
Original:
Me gustaría agregar que si está utilizando Carthage para compilar un módulo en Swift 3.2, debe ir a una terminal y ejecutar:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Para usar las herramientas de línea de comando de Xcode 9, puede ejecutar:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
Esto compilará la biblioteca con sus herramientas de línea de comandos actuales, puede ser un poco lento, pero ahora el proyecto debería compilarse.
Nota
Para revertir y usar sus herramientas de línea de comandos de Xcode estables, simplemente ejecute:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
fuente
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
para actualizar las bibliotecas y debería estar bienXcode 9 viene con un compilador Swift 4 que comprende tanto Swift 3.2 como swift 4, incluso te permite mezclar y combinar entre las 2 versiones. Desafortunadamente, otras versiones no son compatibles.
Incluso si configura su idioma en Swift 3.2, utiliza el compilador Swift 4.
Si está usando cocoapods, puede agregar esto al final de su archivo de vaina para obligar a las vainas a usar Swift 3.2 o 4.0:
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
Alternativamente, puede colocar los archivos del pod directamente en su proyecto temporalmente, hasta que FacebookLogin se actualice a Swift 3.2 o 4.
Nota: Editado según los comentarios de Matt.
fuente
Quizás puedas limpiar el objetivo antes de construirlo. Funciona bien para mí.
fuente
Me encontré con el mismo problema en Xcode 9 Beta 3, que apunta a 'Alamofire' y probé algunas soluciones diferentes, la más fácil que encontré es
1. CMD+SHIFT+K to clean the build 2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
fuente
Hacer una "carpeta de compilación limpia" y reiniciar Xcode 9 limpió el error por mí. Además, el error no impidió que la aplicación se ejecutara en mi dispositivo o en el simulador.
fuente
Vaya al directorio xcode DerivedData, luego elimine todos los archivos que contiene y vuelva a compilar su proyecto. funciona para mí.
y el directorio DerivedData predeterminado es: ~ / Library / Developer / Xcode / DerivedData.
fuente
Si usa Carthage , abra la terminal y;
Si usa Pod , abra la terminal y;
(Además, si no funciona en el pod, puede cambiar SWIFT_VERSION en podfile Ex:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
Después;
Abra Xcode y use;
Command+Option+Shift+K
fuente
config.build_settings
porción?Esto funciona para mi.
1.Limpia tu proyecto en Xcode 8
2.Construya o ejecute su proyecto en Xcode 9
fuente
Limpié el proyecto en Xcode 9 y luego ejecuté la aplicación, funciona.
fuente
Tuve el mismo problema con Xcode 9 GM y esto resolvió mi problema: elimínelo del proyecto y arrástrelo nuevamente a "Embedded Binaries".
fuente
pod update
pero sin resultado. Al final, agregué el marco directamente a mi proyecto y lo agregué a mis binarios integrados que funcionaronCarpeta de construcción limpia
Cmd + option + shift + K
fuente
yo tengo
pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
en mi proyecto y
import FBSDKLoginKit
, después de limpiar el objetivo, no tuve ningún problemaDado que el pod que está utilizando está en swift y es un pod beta, es probable que tenga algunos problemas con el compilador de swift 4, por lo que debe usar la versión objetivo-c del pod por el momento
fuente
Si usa desde Pod:
Podfile
comentario FacebookLogin podPodfile
descomentar FacebookLogin podfuente
Para mi caso, el pod real hacía referencia a un zip estático con binarios prediseñados que apuntan a Swift 3.1. Entonces, la única solución es reconstruir el marco con la fuente de xcode 9.
https://github.com/AudioKit/AudioKit/issues/980
fuente