Xcode 9 Swift Language Version (SWIFT_VERSION)

I’ve recently updated xcode to version 9. Before that in Xcode 8.x whenever I use to do pod update it shows me an update code to convert the code to Swift 3 and doing that solve the errors. But now it is giving me this error:

The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set in the build settings editor.

For this error I’ve tried Build Settings > Swift Language Version and it was Swift 3.2 But as the update call has re-installed some of the pods like Alamofire and it says to install Xcode 8.x to convert the code to Swift 3 so do I need to install an additional version with the latest Xcode? If yes, then how can I install Xcode 8 with Xcode 9?

Add Comment
8 Answer(s)

Answer to your question:
You can download Xcode 8.x from Apple Download Portal or Download Xcode 8.3.3 (or see: Where to download older version of Xcode), if you’ve premium developer account (apple id). You can install & work with both Xcode 9 and Xcode 8.x in single (mac) system. (Make sure you’ve Command Line Tools supporting both version of Xcode, to work with terminal (see: How to install ‘Command Line Tool’))


Hint: How to migrate your code Xcode 9 compatible Swift versions (Swift 3.2 or 4)
Xcode 9 allows conversion/migration from Swift 3.0 to Swift 3.2/4.0 only. So if current version of Swift language of your project is below 3.0 then you must migrate your code in Swift 3 compatible version Using Xcode 8.x.

This is common error message that Xcode 9 shows if it identifies Swift language below 3.0, during migration.

enter image description here

Swift 3.2 is supported by Xcode 9 & Xcode 8 both.

Project ► (Select Your Project Target) ► Build Settings ► (Type ‘swift’ in Searchbar) Swift Compiler Language ► Swift Language Version ► Click on Language list to open it.

enter image description here

Convert your source code from Swift 2.0 to 3.2 using Xcode 8 and then continue with Xcode 9 (Swift 3.2 or 4).


For easier migration of your code, follow these steps: (it will help you to convert into latest version of swift supported by your Xcode Tool)

Xcode: Menus: Edit ▶ Covert ▶ To Current Swift Syntax

enter image description here

Answered on August 4, 2020.
Add Comment

For Objective C Projects created using Xcode 8 and now opening in Xcode 9, it is showing the same error as mentioned in the question.

To fix that, Press the + button in Build Settings and select Add User-Defined Setting as shown in the image below

build setting

Then in the new row created add SWIFT_VERSION as key and 3.2 as value like below.

enter image description here

It will fix the error for objective c projects.

Answered on August 4, 2020.
Add Comment

I just got this after creating a new Objective-C project in Xcode 10, after I added a Core Data model file to the project.

I found two ways to fix this:

  1. The Easy Way: Open the Core Data model’s File Inspector (1) and change the language from Swift to Objective-C

Change Core Data model language

  1. Longer and more dangerous method

The model contains a “contents” file with this line:

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

In there is a sourceLanguage="Swift" entry. Change it to sourceLanguage="Objective-C" and the error goes away.

To find the “contents” file, right click on the .xcdatamodeld in Xcode and do “Show in Finder”. Right-click on the actual (Finder) file and do “Show Package Contents”

Also: Changing the model’s language will stop Xcode from generating managed object subclass files in Swift.

Answered on August 4, 2020.
Add Comment

This can happen when you added Core Data to an existing project.
Check the:
<Name>/<Name>.xcdatamodeld/<Name>.xcdatamodel/contents
file.
This file contains an entry “sourceLanguage” that (by default) might have been set to “Swift”. Change it to “Objective-C”.

Add Comment

I just click on latest swift convert button and set App target build setting-> Swift language version: swift 4.0,

Hope this will help.

Add Comment

This Solution works when nothing else works:

I spent more than a week to convert the whole project and came to a solution below:

First, de-integrate the cocopods dependency from the project and then start converting the project to the latest swift version.

Go to Project Directory in the Terminal and Type:

pod deintegrate 

This will de-integrate cocopods from the project and No traces of CocoaPods will be left in the project. But at the same time, it won’t delete the xcworkspace and podfiles. It’s ok if they are present.

Now you have to open xcodeproj(not xcworkspace) and you will get lots of errors because you have called cocoapods dependency methods in your main projects.

So to remove those errors you have two options:

  1. Comment down all the code you have used from cocoapods library.
  2. Create a wrapper class which has dummy methods similar to cocopods library, and then call it.

Once all the errors get removed you can convert the code to the latest swift version.

Sometimes if you are getting weird errors then try cleaning derived data and try again.

Add Comment

maybe you need to download toolchain. This error occurs when you don’t have right version of swift compiler.

Answered on August 4, 2020.
Add Comment

In my case, all warn disappeared after I directly changed swift version from 2.x to 4.0 in build settings except two warn.

These warning related to myprojectnameTests and myprojectnameUITests folder. I didn’t notice and I thought its relate to direct immigration from Xcode 7 to Xcode 9 and I thought I couldn’t solve this problem and I should install missed Xcode 8 version.

In my case, I deleted these folders and all warns disappeared, but you can recreate this folder and contains using this:

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

and use this article for create test cases: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html

Answered on August 4, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.