Однак я перекомпілював фреймворк, використовуючи той самий Xcode, і він все ще видає мені цю помилку.
- Базовий SDK iOS 11.1 для обох
- Swift Мовна версія Swift 4.0 для обох
- Не використовується стручки / Карфаген
Сподіваюся, хтось може це знати
Однак я перекомпілював фреймворк, використовуючи той самий Xcode, і він все ще видає мені цю помилку.
Сподіваюся, хтось може це знати
Відповіді:
Оновлення:
Для випускних версій Xcode:
Ця помилка (та подібні помилки, пов’язані із Swift 4.1, 4.2 тощо), виникає під час відкриття проекту з Xcode 9.1, 9.2, 9.3, 9.4, 10 тощо, який використовує фреймворки, побудовані з попередніми інструментами Xcode.
Щоб виправити проблему, оновіть та carthage update --platform iOSвідновіть свої фреймворки за допомогою Carthage ( ), Cocoapods ( pod updateабо pod install) або вручну за допомогою нових оновлених інструментів Xcode. Інструменти слід оновлювати автоматично під час оновлення Xcode, але якщо ні, то можна виконати кроки, описані нижче в оригінальній відповіді.
Вам також може знадобитися очистити ваш проект cmd + shift + kі, можливо, папку збірки, cmd + option + shift + kщоб Xcode не використовував кешовані збірки фреймворку.
У деяких випадках вам також може знадобитися видалити папку похідних даних (Легко знайти, перейшовши до Налаштування Xcode -> Місцеположення -> Виведена папка даних ( Спасибі Stunner )
Для бета-версій Xcode:
Дивіться оригінальну відповідь нижче, а потім виконайте кроки вище.
Оригінальна відповідь:
Напевно, у вас все ще є інструменти xcodebuild, встановлені на Xcode 9.0, який будується за допомогою Swift 4.0 і несумісний із Swift 4.0.1 бета-версії Xcode 9.1.
Перевірте термінал за допомогою команди:
xcodebuild -version
Або просто перейдіть до параметрів Xcode -> Місцеположення та перевірте / змініть інструменти командного рядка на Xcode 9.1. Тоді вас слід налаштувати.
Swift Language Versionна Swift 4тих. Тоді це спрацювало.
Моя проблема виникла через зовнішню структуру, яка не була скомпільована для Swift 4.0.2. Я додав цей файл через Карфаген , тому запускається:
carthage update --platform iOS
А потім очищення cmd + shift + kпапки проекту та збірки cmd + option + shift + kта видалення папки похідних даних (просто переміщення її також у смітник) також спрацювало для мене.
У моєму випадку я завантажив бета-версію xCode 11 для тестування SwiftUI. Коли я запускаю свій проект, я отримую помилку "Модуль, скомпільований Swift 5.1, не може бути імпортований компілятором Swift 5.0.1: ..." .
Щоб вирішити цю проблему. я змінив інструмент командного рядка xCode на новий інструмент рядка коментарів xCode 11. Після цього ви можете створити новий проект xcode за допомогою SwiftUI.
Xcode -> Налаштування -> Розташування -> Інструмент командного рядка XCode
я сподіваюся, це допоможе тому, хто хоче протестувати за допомогою нової роботи :)
Встановіть Xcode Toolchain певної версії Xcode, яка працювала для вас звідси .
Набір інструментів Xcode включає копію компілятора, lldb та інших пов’язаних інструментів, необхідних для забезпечення згуртованого досвіду розробки для роботи в певній версії Swift.
Відкрийте Налаштування Xcode, перейдіть до Компоненти> Ланцюжки інструментів і виберіть встановлений ланцюжок інструментів Swift.
Це дозволить вам скомпілювати та запустити програму на даний момент.
Я вирішив цю проблему з бета-версією Xcode 10, яка додає Swift 4.2. Моя проблема не була пов’язана з Карфагеном чи якимись зовнішніми залежностями.
Йти до YourTarget > Build Settings > Swift Language Version всіх ваших цілей Xcode.
Мої всі були налаштовані Swift 4 .
Після додавання фази збірки файлів копіювання я почав отримувати помилку
: 0: помилка: модуль, скомпільований за допомогою Swift 4.1.2, не може бути імпортований компілятором Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build / MyBabug. MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Помилка команди MergeSwiftModule з ненульовим кодом виходу
Потім я встановлюю для кожної цілі Swift Language VersionзначенняSwift 4.2 , що усувало помилку.
Однак я не впевнений, чому помилка траплялася, оскільки встановлення всіх цілей Swift 4має бути однаково дійсним.
Build Settings
У моєму випадку (Xcode 9.2):
Я пішов до Xcode Preferences > Locations > Derived Data
Потім я видалив дані та зробив чисту збірку, і все було нормально.
У моєму випадку я використовував CocoaPods з плагіном cocoapods-binaryдля попередньої побудови бібліотек до бінарних файлів. Після оновлення Xcode з 10 до 11 Xcode видає мені цю помилку:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Я виправляю це, видаляючи /Podsкаталог і запускаючи pod install.
У моєму випадку я перекомпілював фреймворк з якою б версією він не скаржився.
Щоб перекомпілювати, запустіть pod updateабо оновіть картуз (який ви коли-небудь використовуєте) та побудуйте проект.
Потім шукайте фреймворк у пошуку. Скопіюйте та вставте theFramework.frameworkфайл у свій проект і переконайтеся, що "Скопіюйте елементи, якщо це потрібно". Створіть проект заново, і він повинен працювати.