Xcode 9 Swift Dil Sürümü (SWIFT_VERSION)


115

Yakın zamanda xcode'u sürüm 9'a güncelledim. Bundan önce Xcode 8.x'te bunu yapmak pod updateiçin her kullandığımda bana kodu Swift 3'e dönüştürmek ve hataları çözmek için bir güncelleme kodu gösteriyor. Ama şimdi bana şu hatayı veriyor:

Swift kullanan hedefler için "Swift Dil Sürümü" (SWIFT_VERSION) oluşturma ayarı desteklenen bir değere ayarlanmalıdır. Bu ayar, yapı ayarları düzenleyicisinde ayarlanabilir.

Bu hata için denedim Build Settings > Swift Language Versionve Swift 3.2 idi.Ama güncelleme çağrısı Alamofire gibi bazı bölmeleri yeniden yüklediğinden ve kodu Swift 3'e dönüştürmek için Xcode 8.x'i kurmam gerektiğini söylediği için bir en son Xcode ile ek sürüm? Evetse, Xcode 8'i Xcode 9 ile nasıl kurabilirim?


Türetilmiş Verileri temizlemeyi deneyin ve projeyi Xcode 9 üzerinde oluşturmayı deneyin.
iAviator

Xcode 8'deki hızlı sürümünüz nedir?
santhoshkumar

sanırım 8.3.3 idi. xcode 9'dan önceki en sonuncuydu.
Chaudhry Talha

Yanıtlar:


181

Sorunuza Cevap:
Sen den Xcode 8.x indirebilirsiniz Elma İndir Portal veya Xcode 8.3.3 İndir (veya bkz: Xcode eski sürümünü indirmek için nerede ), sen ettik prim geliştirici hesabı (elma id) eğer. Tekli (mac) sistemde hem Xcode 9 hem de Xcode 8.x'i kurabilir ve bunlarla çalışabilirsiniz. ( Command Line ToolsTerminal ile çalışmak için her iki Xcode sürümünü de desteklediğinizden emin olun (bkz: 'Komut Satırı Aracı' nasıl kurulur ))


İpucu: kodunuzu Xcode 9 uyumlu Swift sürümleri (Swift 3.2 veya 4) göç etmek Nasıl
Xcode 9'dan dönüşüm / göç veriyor Swift 3.0için Swift 3.2/4.0sadece. Dolayısıyla, projenizin Swift dilinin mevcut sürümü 3.0'ın altındaysa, kodunuzu Swift 3 uyumlu sürümde Xcode 8.x kullanarak taşımalısınız.

Bu, Xcode 9'un taşıma sırasında Swift dilini 3.0'ın altında tanımlayıp tanımlamadığını gösterdiği yaygın hata mesajıdır.

görüntü açıklamasını buraya girin


Swift 3.2, hem Xcode 9 hem de Xcode 8 tarafından desteklenir.

Proje ► (Proje Hedefinizi Seçin) ► Yapı Ayarları ► (Arama çubuğuna 'swift' yazın) Swift Derleyici Dili ► Swift Dil Sürümü ► Açmak için Dil listesine tıklayın.

görüntü açıklamasını buraya girin



Xcode 8'i kullanarak kaynak kodunuzu Swift 2.0'dan 3.2'ye dönüştürün ve ardından Xcode 9 (Swift 3.2 veya 4) ile devam edin.


Kodunuzun daha kolay taşınması için şu adımları izleyin: (Xcode Aracınız tarafından desteklenen swift'in en son sürümüne dönüştürmenize yardımcı olacaktır)

Xcode: Menüler: Düzenle ▶ Gizli ▶ Mevcut Swift Sözdizimine

görüntü açıklamasını buraya girin


9
Buraya sadece şu anda (Aralık 2018) Swift 2 kodunun tozunu aldığınız için geldiyseniz, Xcode 8'in Mojave'de çalışmadığını öğrenince hayal kırıklığına uğrayacaksınız.
bugloaf

53

Xcode 8 kullanılarak oluşturulan ve şimdi Xcode 9'da açılan Objective C Projeleri için, soruda belirtilen hatanın aynısını gösteriyor.

Bunu düzeltmek için, Yapı Ayarlarında + düğmesine basın ve aşağıdaki resimde gösterildiği gibi Kullanıcı Tanımlı Ayar Ekle'yi seçin.

inşa ayarı

Daha sonra oluşturulan yeni satırda aşağıdaki SWIFT_VERSIONgibi anahtar ve 3.2değer olarak ekleyin .

görüntü açıklamasını buraya girin

Hedef c projeleri için hatayı düzeltir.


2
Bu bana yardımcı oldu. Teşekkürler.
Andreas Kraft

9
CocoaPods ile bu sorunu yaşıyorsanız, bu yapı ayarını pods.xcodeproject bölümüne eklemeniz gerekebilir.
Stewart Macdonald

1
Bu benim için çalıştı, ayrıca derleme ayarlarındaki 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'i' $ (devralınan) 'olarak değiştirmek zorunda kaldım
F-1

1
Yine 2 ay sonra teşekkür ederiz
Oca

1
Çözümü takdir edin.
user366584

4

Bunu projeye Core Data model dosyası ekledikten sonra Xcode 10'da yeni bir Objective-C projesi oluşturduktan sonra aldım.

Bunu düzeltmenin iki yolunu buldum:

  1. Kolay Yol: Temel Veri modelinin Dosya Denetçisini ( - 1) açın ve dili Swift'den Objective-C'ye değiştirin

Temel Veri modeli dilini değiştirin

  1. Daha uzun ve daha tehlikeli yöntem

Model, şu satıra sahip bir "içerik" dosyası içerir:

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

İçinde bir sourceLanguage="Swift"giriş var. Olarak değiştirin sourceLanguage="Objective-C"ve hata ortadan kalkar.

"İçerikler" dosyasını bulmak için .xcdatamodeld, Xcode'da sağ tıklayın ve "Finder'da Göster" i yapın. Gerçek (Bulucu) dosyayı sağ tıklayın ve "Paket İçeriğini Göster" i yapın

Ayrıca: Modelin dilini değiştirmek, Xcode'un Swift'de yönetilen nesne alt sınıf dosyaları oluşturmasını durduracaktır.


1

Mevcut bir projeye Temel Veriler eklediğinizde bu gerçekleşebilir.
: Check
<Adı> / <Name> .xcdatamodeld / <Name> .xcdatamodel / içindekiler
dosyasını.
Bu dosya, (varsayılan olarak) "Swift" olarak ayarlanmış olabilecek bir "sourceLanguage" girdisi içerir. "Objective-C" olarak değiştirin.


0

En son hızlı dönüştürme düğmesine tıklıyorum ve Uygulama hedefi oluşturma ayarını ayarlıyorum -> Swift dil sürümü: hızlı 4.0,

Umarım bu yardımcı olur.


0

Bu Çözüm, başka hiçbir şey işe yaramadığında çalışır:

Tüm projeyi dönüştürmek için bir haftadan fazla zaman harcadım ve aşağıdaki çözüme ulaştım:

Öncelikle, cocopods bağımlılığını projeden ayırın ve ardından projeyi en son hızlı sürüme dönüştürmeye başlayın.

Terminalde Proje Dizinine gidin ve Türü:

pod deintegrate

Bu, cocopod'ları projeden ayrıştıracak ve projede CocoaPod'lardan hiçbir iz kalmayacaktır. Ancak aynı zamanda xcworkspace ve podfiles silinmez. Varsa sorun değil.

Artık xcodeproj'u (xcworkspace değil) açmanız gerekiyor ve ana projelerinizde cocoapods bağımlılık yöntemlerini çağırdığınız için birçok hata alacaksınız.

Bu hataları gidermek için iki seçeneğiniz vardır:

  1. Cocoapods kitaplığından kullandığınız tüm kodu not edin.
  2. Cocopods kitaplığına benzer kukla yöntemlere sahip bir sarmalayıcı sınıfı oluşturun ve sonra onu çağırın.

Tüm hatalar giderildikten sonra, kodu en son hızlı sürüme dönüştürebilirsiniz.

Bazen tuhaf hatalar alıyorsanız, türetilen verileri temizlemeyi deneyin ve tekrar deneyin.


0

belki de araç zincirini indirmeniz gerekiyor. Bu hata, hızlı derleyicinin doğru sürümüne sahip olmadığınız zaman ortaya çıkar.


-3

Benim durumumda, iki uyarı dışında, hızlı sürümü 2.x'ten 4.0'a doğrudan değiştirdikten sonra tüm uyarılar kayboldu.

Bu uyarı myprojectnameTestsve myprojectnameUITestsklasör ile ilgilidir. Fark etmedim ve bunun Xcode 7'den Xcode 9'a doğrudan göçle ilgili olduğunu düşündüm ve bu sorunu çözemeyeceğimi ve eksik Xcode 8 sürümünü yüklemem gerektiğini düşündüm.

Benim durumumda, bu klasörleri sildim ve tüm uyarılar kayboldu, ancak bu klasörü yeniden oluşturabilirsiniz ve şunu kullanarak şunları içerir:

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

ve test senaryoları oluşturmak için bu makaleyi kullanın: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html


ve birisi bana hatamın ne olduğunu söylesin !?
iman kazemayni

2
Kişisel olarak buna olumsuz oy vermezdim, cevabınızda yanlış bir şey yok, ancak en iyi yer OP'nin sorusu hakkında yorum yapmak olacaktır. Ayrıca, soruları yanıtlamak için doğru yolu bulmanızda size yardımcı olacak stackoverflow.com/help/how-to-answer sayfasına da göz atabilirsiniz .
grassyburrito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.