Saya memiliki proyek Objective-C di Xcode 8 Beta 3. Sejak memperbarui, setiap kali saya mencoba membangun saya menerima kesalahan berikut:
“Gunakan Legacy Swift Language Version” (SWIFT_VERSION) harus dikonfigurasi dengan benar untuk target yang menggunakan Swift. Gunakan menu [Edit> Convert> To Current Swift Syntax…] untuk memilih versi Swift atau gunakan editor Build Settings untuk mengonfigurasi pengaturan build secara langsung.
Adakah yang mengalami ini? Karena ini adalah proyek Objective-C, tidak ada pengaturan build untuk mengonfigurasi Swift. Saya juga memastikan tidak ada dependensi proyek atau CocoaPods yang menggunakan Swift. Satu-satunya solusi yang saya miliki adalah menggunakan Beta 2. Ada ide bagaimana saya bisa memperbaiki masalah ini?
Saya juga harus menyebutkan saya menjalankan OSX 10.12 Beta 2.
sumber
Jawaban:
Jika Anda menggunakan CocoaPods dan ingin memperbaikinya secara otomatis setiap kali Anda melakukan
pod install
, maka Anda dapat menambahkan baris ini ke akhir Podfile Anda:EDIT: Masalah ini sekarang diperbaiki jika Anda menggunakan CocoaPods v1.1.1 atau lebih baru. Jangan lupa untuk menghapus
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
pengaturan dari target proyek utama Anda.sumber
2.3
bukan3.0
solusi Hebat! Hal ini secara efektif membuat"Use Legacy Swift Language Version"
untukNo
(atau jika Anda mengubahnya ke2.3
ituYes
). Manfaat dari opsi ini adalah setiap kali Andapod install
menetapkan pengaturan itu secara otomatis! Luar biasa. Saya melihatSWIFT_VERSION
akan diatur pada proyek - proyek Obj-C juga. Saya berasumsi tidak ada dampak buruk?pod install / update
. Solusi ini membuat segalanya lebih cepat. Anda juga dapat memperbarui versi Cocoapods Anda sekarang: itu juga harus memperbaiki masalah ini.Saya baru saja menemukan cara untuk memperbaikinya.
Buka pengaturan Bangun proyek atau pustaka dan atur atribut Versi Swift Compiler "Gunakan Legacy Swift Language Version" dari Tidak Ditentukan ke Ya atau Tidak.
sumber
pod install
saya sarankan menggunakan jawaban @Tulleb di atas.Saya telah mengabaikan masalah ini untuk sementara waktu sekarang dan hanya mengerjakan hal-hal lain sementara itu - saya akhirnya menemukan solusi untuk masalah saya.
Karena proyek saya adalah Objective-C, saya pikir mungkin salah satu Pod yang saya gunakan menggunakan Swift, saya memeriksa setiap Pod dan tidak ada satu pun.
Solusi terakhir adalah bahwa model Data Inti saya diatur untuk menghasilkan kode di Swift walaupun saya telah membuatnya secara manual di menu File> New> NSManagedObjectSubclass. Yang harus saya lakukan adalah beralih ke Objective-C.
sumber
Masalah ini juga terlihat di Xcode-8.1. Ketika kami menambahkan Target baru seperti Extension atau Widget dan perpustakaan pihak ketiga terintegrasi dalam target baru dengan bantuan cocopods. Setelah Pod menginstal . Kita bisa menghadapi kesalahan yang sama seperti di atas.
Ubah Versi Pakai Versi Bahasa Swift di setiap Pengaturan Pembuatan Perpustakaan menjadi
sumber
Jika Anda menggunakan Xcode 8 atau lebih baru
sumber
Tambahkan kode di bawah ini di akhir podfile.
sumber
Saya sedang mengerjakan sebuah proyek yang menggabungkan kode objektif-c dan kode cepat yang sebelumnya saya gunakan versi cepat 2.3 dan setelah memutakhirkan ke swift 3 saya tidak dapat membangun proyek. Xcode mengeluh dengan pesan kesalahan yang disebutkan.
Rupanya, masih ada beberapa versi Swift yang ketinggalan zaman yang ditentukan dalam file project.pbxproj saya. Ada swift 3.0.1 yang ditentukan:
Padahal, saya sudah menginstal 3.0.2:
Sooo, saya memperbaikinya dengan mengubah versi Swift di file project-pbxproj menjadi:
Tampaknya specifier versi level patch terlalu spesifik.
sumber
Dalam kasus saya, saya hanya melakukan hal-hal berikut
Pilih Target proyek => Pergi ke pengaturan Bangun => Cari untuk "Versi Bahasa Swift" => beri Nilai versi Swift saat ini
Thats all Ini telah memperbaiki Masalah saya
sumber
Saya mendapat kesalahan yang sama. Saya mencoba mencari "Gunakan Versi Bahasa Legacy Swift", tetapi tidak ditemukan. Saya menggunakan Xcode 8.3.3 Setelah berselancar terlalu banyak dan bekerja di sekitar saya menemukan solusi ini, dan ini berhasil bagi saya.
sumber
atur "Gunakan Legacy Swift Versi Bahasa" ke "YA" jika Anda menggunakan versi cepat swift dalam proyek Anda atau pihak ke-3 cepat. "Tidak" jika proyek Anda diperbarui ke versi cepat saat ini. jika Anda tidak mengonfigurasi versi cepat Anda, setelah setiap pembaruan dan Instal, kerangka kerja Pod harus menentukan ini.
sumber
Saya sebenarnya harus melakukan pencarian untuk "Legacy Swift" untuk dapat mengubahnya dari yang tidak ditentukan ke "Ya" Ketika saya hanya menggulir ke bawah ke bagian yang dijelaskan di atas, saya tidak dapat mengubahnya. Saya harap ini akan membantu seseorang.
sumber
Proyek saya ditulis dalam bahasa Swift. Saya mendapat kesalahan yang sama dengan
fastlane
. Apa yang terjadi adalah Xcode saya diperbarui secara otomatis sehingga saya harus memperbarui proyek saya ke Swift 3.0. Ada banyak kesalahan. Memperbaiki dan men-debug membutuhkan banyak waktu dan itu tidak layak pada saat itu, jadi saya memutuskan untuk menginstal versi Xcode yang lebih lama. Kembalikan kode saya ke 2.3. Kemudianfastlane beta
tidak bekerja lagi. Ternyata, saya perlu mengatur Command Line Tool ke 7.3.sumber
Saya mengalami masalah yang sama dan menyelesaikannya dengan melakukan hal berikut:
Dalam Proyek> Pengaturan Bangun:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Kemudian di Podfile saya:
config.build_settings['SWIFT_VERSION'] = '3.0'
Menggunakan ketiga pengaturan ini menghapus semua peringatan dan memungkinkan saya untuk mengkompilasi dengan benar.
Yang paling tidak jelas dan apa yang sebenarnya mendapat kemajuan untuk kompilasi adalah mengubah SWIFT_VERSION di Podfile dari 3 menjadi 3.0 seperti yang disarankan di sini .
sumber
Dari XCode 8 dan seterusnya, Anda dapat menggunakan swift 2.3 meskipun XCode 8 menggunakan swift 3.x sebagai versi swift default. Untuk menggunakan swift 2.3, cukup nyalakan flag Gunakan Legacy Swift Language Version ke YES dari Build Setting, maka XCode akan menggunakan Swift 2.3 untuk target proyek itu.
sumber
Sebelum mencoba solusi yang rumit, berikut adalah pemeriksaan dasar yang perlu Anda lakukan jika Anda baru menggunakan Cocoapods dan Anda mengalami masalah ini.
Anda mungkin perlu:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
lagiMungkin hanya itu.
Jika tidak, Anda bisa pergi ke atas ;-)
sumber
Saya memiliki masalah yang sama setelah memperbarui ke xcode 8.3.2 tetapi opsi "Gunakan Legacy Swift Language" hilang. Ini tampaknya menjadi opsi untuk berubah sekarang:
Digunakan perbaikan ini dengan Alamofire dan lib lainnya dan semua berfungsi ok.
sumber
Pergi ke Pengaturan Bangun Proyek untuk proyek dan Target lakukan di bawah dua.
Ubah ke yang terbaru
Swift 3
.Kesalahan teratasi.
Jika sudah diperbaiki kesalahan Anda, silakan menyukainya.
sumber
Dalam Xcode 9 beta. Buka Pengaturan Proyek, Pengaturan Bangun, cari Versi Bahasa Swift. Dalam Xcode 9 Anda harus menentukan apakah Anda menggunakan Swift 3.2 atau Swift 4.
sumber
Jika Anda berubah
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
menjadiNO
masih tidak berfungsi, itu karena masalah xcode, bukan masalah Anda. Melakukan langkah-langkah berikut:1. Ubah
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
properti menjadiYES
sesuai dengan target peringatan2.kemudian akan muncul peringatan di bilah kiri yang merekomendasikan Anda mengubah ke swift 3.0
3. lalu ubah kembali ke
NO
. Bangun kembali proyek, xcode akhirnya mendeteksi perubahan AndaNO
!Masalah terpecahkan dalam kasus ini!
sumber