Xcode 9 Versi Bahasa Swift (SWIFT_VERSION)

115

Saya baru saja memperbarui xcode ke versi 9. Sebelum itu di Xcode 8.x setiap kali saya menggunakannya untuk melakukannya pod updatemenunjukkan kepada saya kode pembaruan untuk mengubah kode ke Swift 3 dan melakukan itu menyelesaikan kesalahan. Tapi sekarang ini memberi saya kesalahan ini:

Setelan build "Versi Bahasa Swift" (SWIFT_VERSION) harus disetel ke nilai yang didukung untuk target yang menggunakan Swift. Pengaturan ini dapat diatur di editor pengaturan build.

Untuk kesalahan ini saya sudah mencoba Build Settings > Swift Language Versiondan itu adalah Swift 3.2 Tetapi karena panggilan pembaruan telah menginstal ulang beberapa pod seperti Alamofire dan dikatakan untuk menginstal Xcode 8.x untuk mengonversi kode ke Swift 3 jadi apakah saya perlu menginstal versi tambahan dengan Xcode terbaru? Jika ya, lalu bagaimana cara menginstal Xcode 8 dengan Xcode 9?

Chaudhry Talha
sumber
coba bersihkan Derived Data dan bangun proyek di Xcode 9.
iAviator
Apa versi cepat Anda di Xcode 8 ??
santhoshkumar
8,3.3 Saya pikir. itu yang terbaru sebelum xcode 9.
Chaudhry Talha

Jawaban:

181

Jawaban untuk pertanyaan
Anda : Anda dapat mengunduh Xcode 8.x dari Portal Unduhan Apple atau Unduh Xcode 8.3.3 (atau lihat: Di mana mengunduh Xcode versi lama ), jika Anda memiliki akun pengembang premium (id apple). Anda dapat menginstal & bekerja dengan Xcode 9 dan Xcode 8.x dalam satu sistem (mac). (Pastikan Anda telah Command Line Toolsmendukung kedua versi Xcode, untuk bekerja dengan terminal (lihat: Cara menginstal 'Alat Baris Perintah' ))


Petunjuk: Bagaimana untuk bermigrasi kode Anda Xcode 9 versi Swift kompatibel (Swift 3.2 atau 4)
Xcode 9 memungkinkan konversi / migrasi dari Swift 3.0ke Swift 3.2/4.0saja. Jadi jika versi bahasa Swift proyek Anda saat ini di bawah 3.0 maka Anda harus memigrasi kode Anda dalam versi yang kompatibel dengan Swift 3 Menggunakan Xcode 8.x.

Ini adalah pesan kesalahan umum yang ditampilkan Xcode 9 jika ia mengidentifikasi bahasa Swift di bawah 3.0, selama migrasi.

masukkan deskripsi gambar di sini


Swift 3.2 didukung oleh Xcode 9 & Xcode 8 keduanya.

Proyek ► (Pilih Target Proyek Anda) ► Pengaturan Bangun ► (Ketik 'swift' di Searchbar) Bahasa Penyusun Swift ► Versi Bahasa Swift ► Klik pada daftar Bahasa untuk membukanya.

masukkan deskripsi gambar di sini



Ubah kode sumber Anda dari Swift 2.0 ke 3.2 menggunakan Xcode 8 dan kemudian lanjutkan dengan Xcode 9 (Swift 3.2 atau 4).


Untuk migrasi kode yang lebih mudah, ikuti langkah-langkah berikut: (ini akan membantu Anda mengonversi ke versi swift terbaru yang didukung oleh Xcode Tool Anda)

Xcode: Menu: Edit ▶ Terselubung ▶ Ke Sintaks Swift Saat Ini

masukkan deskripsi gambar di sini

Krunal
sumber
9
Jika Anda datang ke sini karena Anda baru sekarang (Des 2018) membersihkan beberapa kode Swift 2, Anda akan kecewa mengetahui bahwa Xcode 8 tidak berjalan di Mojave.
bugloaf
53

Untuk Proyek Objective C yang dibuat menggunakan Xcode 8 dan sekarang dibuka di Xcode 9, ini menunjukkan kesalahan yang sama seperti yang disebutkan dalam pertanyaan.

Untuk memperbaikinya, Tekan tombol + di Build Settings dan pilih Add User-Defined Setting seperti yang ditunjukkan pada gambar di bawah ini

membangun pengaturan

Kemudian pada baris baru dibuat add SWIFT_VERSIONas key dan 3.2sebagai nilai seperti di bawah ini.

masukkan deskripsi gambar di sini

Ini akan memperbaiki kesalahan untuk proyek tujuan c.

R. Mohan
sumber
2
Ini membantu saya. Terima kasih.
Andreas Kraft
9
Jika Anda mengalami masalah ini dengan CocoaPods, Anda mungkin perlu menambahkan setelan build ini ke bagian pods.xcodeproject.
Stewart Macdonald
1
Ini berhasil bagi saya, saya juga harus memodifikasi 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARY' dalam pengaturan build menjadi '$ (inherited)'
F-1
1
Terima kasih lagi 2 bulan kemudian
Jan
1
Hargai solusinya.
pengguna366584
4

Saya baru saja mendapatkan ini setelah membuat proyek Objective-C baru di Xcode 10, setelah saya menambahkan file model Data Inti ke proyek.

Saya menemukan dua cara untuk memperbaikinya:

  1. Cara Mudah: Buka File Inspector model Core Data ( - 1) dan ubah bahasa dari Swift ke Objective-C

Ubah bahasa model Data Inti

  1. Metode yang lebih lama dan lebih berbahaya

Model berisi file "konten" dengan baris ini:

<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

Di sana ada jalan sourceLanguage="Swift"masuk. Ubah ke sourceLanguage="Objective-C"dan kesalahan hilang.

Untuk menemukan file "isi", klik kanan .xcdatamodelddi Xcode dan lakukan "Show in Finder". Klik kanan pada file (Finder) yang sebenarnya dan lakukan "Show Package Contents"

Selain itu: Mengubah bahasa model akan menghentikan Xcode membuat file subkelas objek terkelola di Swift.

raja nevan
sumber
1

Ini dapat terjadi ketika Anda menambahkan Data Inti ke proyek yang ada.
Periksa:
<Name> / <Name> .xcdatamodeld / <Name> .xcdatamodel / content
file.
File ini berisi entri "sourceLanguage" yang (secara default) mungkin telah disetel ke "Swift". Ubah ke "Objective-C".

digitaldaemon
sumber
0

Saya cukup mengklik tombol konversi cepat terbaru dan mengatur pengaturan target App build-> Versi bahasa Swift: swift 4.0,

Semoga ini bisa membantu.

Atal Singh
sumber
0

Solusi ini berfungsi ketika tidak ada yang berfungsi:

Saya menghabiskan lebih dari seminggu untuk mengubah keseluruhan proyek dan menemukan solusi di bawah ini:

Pertama, batalkan integrasi cocopods dependency dari proyek, lalu mulailah mengonversi proyek ke versi swift terbaru.

Buka Direktori Proyek di Terminal dan Ketik:

pod deintegrate

Ini akan menghentikan integrasi cocopods dari proyek dan Tidak ada jejak CocoaPods yang tertinggal di proyek. Tetapi pada saat yang sama, itu tidak akan menghapus xcworkspace dan podfiles. Tidak apa-apa jika mereka hadir.

Sekarang Anda harus membuka xcodeproj (bukan xcworkspace) dan Anda akan mendapatkan banyak kesalahan karena Anda telah memanggil metode ketergantungan cocoapods dalam proyek utama Anda.

Jadi untuk menghapus kesalahan tersebut Anda memiliki dua opsi:

  1. Komentari semua kode yang telah Anda gunakan dari pustaka cocoapods.
  2. Buat kelas pembungkus yang memiliki metode dummy yang mirip dengan pustaka cocopods, lalu panggil.

Setelah semua kesalahan dihapus, Anda dapat mengonversi kode ke versi swift terbaru.

Terkadang jika Anda mendapatkan kesalahan aneh, coba bersihkan data turunan dan coba lagi.

Shubham Mishra
sumber
0

mungkin Anda perlu mengunduh toolchain. Kesalahan ini terjadi jika Anda tidak memiliki versi compiler swift yang benar.

Dalmate
sumber
-3

Dalam kasus saya, semua peringatan menghilang setelah saya langsung mengubah versi swift dari 2.x menjadi 4.0 dalam pengaturan build kecuali dua peringatan.

Peringatan ini terkait dengan folder myprojectnameTestsdan myprojectnameUITests. Saya tidak memperhatikan dan saya pikir ini terkait dengan imigrasi langsung dari Xcode 7 ke Xcode 9 dan saya pikir saya tidak dapat menyelesaikan masalah ini dan saya harus menginstal versi Xcode 8 yang terlewat.

Dalam kasus saya, saya menghapus folder ini dan semua peringatan menghilang, tetapi Anda dapat membuat ulang folder ini dan berisi menggunakan ini:

file > new > target > (uitest or unittest extensions)

dan gunakan artikel ini untuk membuat kasus uji: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html

iman kazemayni
sumber
dan seseorang memberitahuku apa kesalahanku !?
Iman kazemayni
2
Secara pribadi saya tidak akan meremehkan ini, tidak ada yang salah dengan jawaban Anda, tetapi tempat terbaik adalah mengomentari pertanyaan OP. Anda juga dapat melihat stackoverflow.com/help/how-to-answer yang akan membantu Anda menemukan cara yang benar untuk menjawab pertanyaan.
grassyburrito