После обновления до Xcode 9 я попытался создать один из своих проектов.
Я использую модуль FacebookLogin . У меня ошибка компилятора в FacebookLogin / LoginButton.swift
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
В настройках моей целевой сборки для языковой версии Swift установлено значение Swift 3.2 .
Полагаю, мне нужно подождать, пока Facebook обновит свой модуль? Или любое другое предложение?
Благодаря !
Ответы:
Обновить:
Решение также протестировано и работает в Swift 5 и Xcode 11.
Оригинал:
Я хотел бы добавить, что если вы используете Carthage для компиляции модуля в Swift 3.2, вам следует перейти в терминал и запустить:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Чтобы использовать инструменты командной строки Xcode 9, вы можете запустить:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
Это скомпилирует библиотеку с вашими текущими инструментами командной строки, это может быть немного медленным, но теперь проект должен быть собран.
Запись
Чтобы вернуться и использовать стабильные инструменты командной строки Xcode, просто запустите:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
источник
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
для обновления библиотек, и все должно быть в порядкеXcode 9 поставляется с компилятором Swift 4, который понимает как Swift 3.2, так и swift 4, он даже позволяет вам смешивать и сопоставлять две версии. К сожалению, другие версии не поддерживаются.
Даже если вы установите язык Swift 3.2, он будет использовать компилятор Swift 4.
Если вы используете cocoapods, вы можете добавить это в конец файла модуля, чтобы модули использовали Swift 3.2 или 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
В качестве альтернативы вы можете временно поместить файлы из модуля непосредственно в свой проект, пока FacebookLogin не обновится до Swift 3.2 или 4.
Примечание: отредактировано на основе отзыва Мэтта.
источник
Может быть, вы сможете очистить цель перед тем, как строить ее. Он отлично работает для меня.
источник
Я столкнулся с той же проблемой в Xcode 9 Beta 3, которая указывает на «Alamofire», и попробовал несколько разных решений, самое простое, что я нашел, -
1. CMD+SHIFT+K to clean the build 2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
источник
Выполнение «чистой папки сборки» и перезапуск Xcode 9 устранили ошибку для меня. Также ошибка не остановила запуск приложения на моем устройстве или симуляторе.
источник
goto xcode DerivedData, затем удалите все файлы внутри него и перекомпилируйте свой проект. это работает для меня.
а каталог DerivedData по умолчанию: ~ / Library / Developer / Xcode / DerivedData.
источник
Если вы используете Carthage , откройте терминал и;
При использовании Pod откройте терминал и;
(Также, если не работает в модуле, вы можете изменить SWIFT_VERSION в подфиле Ex:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
После;
Откройте Xcode и используйте;
Command+Option+Shift+K
источник
config.build_settings
уходит порция?Меня устраивает.
1. Очистите свой проект в Xcode 8
2.Создайте или запустите свой проект в Xcode 9
источник
Я очистил проект в Xcode 9, а затем запустил приложение, оно работает.
источник
У меня была такая же проблема с Xcode 9 GM, и это решило мою проблему: удалите его из проекта и снова перетащите во «Встроенные двоичные файлы».
источник
pod update
но безрезультатно. В конце концов , я добавил рамки непосредственно в мой проект и добавить его в мой Embedded Binaries , которые работалиПапка чистой сборки
Cmd + option + shift + K
источник
я имею
pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
в моем проекте, и
import FBSDKLoginKit
после очистки цели у меня не было проблемПоскольку модуль, который вы используете, находится в быстром темпе и является бета-модулем, вполне вероятно, что у вас возникнут проблемы с компилятором swift 4, вы должны пока использовать версию модуля objective-c
источник
Если вы используете из Pod:
Podfile
комментарии FacebookLogin podPodfile
раскомментируйте FacebookLogin стручкаисточник
В моем случае фактический модуль ссылался на статический zip-архив с предварительно созданными двоичными файлами, ориентированными на Swift 3.1. Поэтому единственное решение - перестроить фреймворк с исходным кодом из xcode 9.
https://github.com/AudioKit/AudioKit/issues/980
источник