Modul yang dikompilasi dengan Swift 4.0 tidak dapat diimpor di Swift 4.0.1

92

Namun saya telah mengkompilasi ulang kerangka kerja menggunakan Xcode yang sama dan masih memberi saya kesalahan ini.

  • SDK dasar iOS 11.1 untuk keduanya
  • Versi Bahasa Swift Swift 4.0 untuk keduanya
  • Tidak menggunakan Pod / Carthage

Saya berharap seseorang mungkin tahu

Simon
sumber
Tampaknya Apple perlu mempertimbangkan kembali pemberitahuan penghentian 10 tahun untuk Tujuan C: ^) Ini telah menggigit saya pada> 1 proyek sekarang dan pada keduanya ini adalah kerangka kerja biner pihak ketiga.
Anton Tropashko

Jawaban:

139

Memperbarui:

Untuk versi rilis Xcode:

Kesalahan ini (dan kesalahan serupa yang melibatkan Swift 4.1, 4.2, dll.) Akan terjadi saat membuka proyek dengan Xcode 9.1, 9.2, 9.3, 9.4, 10, dll. Yang menggunakan kerangka kerja yang dibuat dengan alat Xcode sebelumnya.

Untuk memperbaiki masalah ini, perbarui dan buat kembali kerangka kerja Anda menggunakan Carthage ( carthage update --platform iOS), Cocoapods ( pod updateatau pod install), atau secara manual, dengan alat Xcode baru yang diperbarui. Alat harus diperbarui secara otomatis saat Anda memperbarui Xcode, tetapi jika tidak, Anda dapat mengikuti langkah-langkah yang diuraikan di bawah ini dalam jawaban asli.

Anda mungkin juga perlu membersihkan proyek Anda cmd + shift + kdan mungkin folder build Anda cmd + option + shift + kuntuk mendapatkan Xcode agar tidak menggunakan build kerangka yang di-cache.

Dalam beberapa kasus, Anda mungkin juga perlu menghapus folder data turunan (Mudah ditemukan dengan membuka Preferensi Xcode -> Lokasi -> Folder Data Berasal ( Terima kasih cantik )

Untuk versi beta Xcode:

Lihat jawaban asli di bawah dan kemudian ikuti langkah-langkah di atas.

Jawaban Asli:

Anda mungkin masih menyetel alat xcodebuild ke Xcode 9.0 yang dibuat dengan Swift 4.0 dan tidak kompatibel dengan Swift 4.0.1 Xcode 9.1 beta.

Periksa di terminal menggunakan perintah:

xcodebuild -version

Atau cukup masuk ke preferensi Xcode -> Lokasi dan periksa / ubah alat baris perintah ke Xcode 9.1. Anda harus siap.

Zig
sumber
1
Saya juga membersihkan data Berasal, dan membersihkan proyek, tidak tahu apakah perlu untuk semua orang tetapi tampaknya di sini. Terima kasih
Simon
3
Hai @gig. Repo yang saya gunakan di github (mattdonnelly / swifter) ada di Swift 4.0, tetapi jelas telah dikompilasi menggunakan XCode 9.0, jadi saya mendapatkan masalah ini. Apa langkah-langkah yang diperlukan untuk mengkompilasi ulang cocoapod orang lain di Github untuk XCode 9.1 dan yang lebih baru?
Joseph Beuys 'Mum
1
apakah ada cara untuk menambahkan alat baris perintah? Saya hanya memiliki Xcode 9.3 di dropdown baris perintah saya. dan saya memiliki masalah ini juga
tara tandel
1
Beberapa pod saya belum siap untuk Swift 4.2, oleh karena itu saya harus menyematkan Swift Language Versionke Swift 4untuk itu. Kemudian berhasil.
skofgar
1
Ditambah 1 untuk pintasan untuk membersihkan folder build - bukanlah sesuatu yang saya tahu cara melakukannya begitu saja.
Matt
25

Masalah saya adalah karena kerangka kerja eksternal tidak dikompilasi untuk Swift 4.0.2. Saya telah menambahkan file ini melalui Carthage , jadi menjalankan:

carthage update --platform iOS

Dan kemudian membersihkan proyek cmd + shift + kdan membangun folder cmd + option + shift + kdan menghapus folder data turunan (hanya memindahkannya ke tempat sampah juga) bekerja untuk saya.

Cantik
sumber
2
memang, ini pada dasarnya adalah solusinya. Hal yang sama baru saja terjadi hari ini (18 April), karena pembaruan cepat terbaru dari Apple! :)
Fattie
cmd + option + shift + k adalah trik yang dilakukan setelah memperbarui Carthage. Terima kasih!
Leonardo Leite
15

Dalam kasus saya, saya mengunduh xCode 11 versi Beta untuk menguji SwiftUI. Ketika saya menjalankan proyek saya, saya mendapat kesalahan "Modul yang dikompilasi dengan Swift 5.1 tidak dapat diimpor oleh kompiler Swift 5.0.1: ..." .

Untuk memperbaiki masalah ini. saya mengubah alat baris perintah xCode menjadi alat baris komentar xCode 11 baru. Setelah itu, Anda dapat membuat proyek xcode baru dengan SwiftUI.

Xcode -> Preferensi -> Lokasi -> Alat Baris perintah XCode

Alat Garis Xcode Commend

Saya harap, ini akan membantu seseorang yang ingin menguji dengan freamework baru :)

Emre Gürses
sumber
9

Instal Xcode Toolchain dari versi Xcode tertentu yang berfungsi untuk Anda dari sini .

Toolchain Xcode menyertakan salinan compiler, lldb, dan alat terkait lainnya yang diperlukan untuk memberikan pengalaman pengembangan yang kohesif untuk bekerja dalam versi tertentu dari Swift.

Buka Preferensi Xcode, buka Komponen> Toolchains, dan pilih toolchain Swift yang diinstal.

Ini akan memungkinkan Anda mengkompilasi dan menjalankan aplikasi untuk saat ini.

Tina
sumber
Setelah 2 hari mencari dan mencoba setiap solusi yang mungkin dengan pembaruan carthage, bootstrap, pengaturan bahasa yang cepat, dll. Saya menemukan jawaban yang tepat di sini :)
memresubasi
7

Saya mengalami masalah ini dengan Xcode 10 beta, yang menambahkan Swift 4.2. Masalah saya tidak terkait dengan Kartago atau ketergantungan eksternal apa pun.

Pergi ke YourTarget > Build Settings > Swift Language Versionuntuk semua target Xcode Anda.

Punyaku sudah siap Swift 4.

Setelah menambahkan Fase Pembuatan File Salin, saya mulai mendapatkan kesalahan

: 0: error: modul yang dikompilasi dengan Swift 4.1.2 tidak dapat diimpor oleh compiler Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~p Partial.swiftmodule

Command MergeSwiftModule gagal dengan kode keluar bukan nol

Saya kemudian menetapkan setiap target Swift Language Versionke Swift 4.2, yang menghilangkan kesalahan.

Saya tidak yakin mengapa kesalahan itu terjadi di tempat pertama, karena memiliki semua target yang disetel Swift 4harus sama validnya.

pkamb
sumber
1
Saya kesulitan menemukanBuild Settings
Chandrew
@Chandrew klik Target Anda terlebih dahulu. Jawaban yang diperbarui.
pkamb
3

Dalam kasus saya (Xcode 9.2):

Saya pergi ke Xcode Preferences > Locations > Derived Data

Saya kemudian menghapus data dan melakukan pembangunan bersih dan baik-baik saja.

pengguna3288482
sumber
1

Dalam kasus saya, saya menggunakan CocoaPods dengan plugin cocoapods-binaryuntuk membuat pustaka menjadi binari. Setelah saya memutakhirkan Xcode dari 10 menjadi 11, Xcode memberi saya kesalahan ini:

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

Saya memperbaikinya dengan menghapus /Podsdirektori dan menjalankan pod install.

Benjamin Wen
sumber
0

Dalam kasus saya, saya mengkompilasi ulang kerangka kerja dengan versi apa pun yang dikeluhkannya.

Untuk mengkompilasi ulang, jalankan pod updateatau perbarui carthage (mana pun yang Anda gunakan), dan buat proyek.

Kemudian cari kerangka di finder. Salin-tempel theFramework.frameworkke proyek Anda dan pastikan untuk "Salin item jika diperlukan". Bangun proyek lagi dan itu akan bekerja.

Joseph Francis
sumber