I need to upgrade a project to run on swift 5 yet, the last time someone upgraded the project it was built on swift 4. So I completed the Xcode project update yet when I try and compile, some of my cocoa pods are saying they are using swift 5 but the pod themselves are not built for 5 yet. Which is causing compile errors.
So what I think I need to do is go through each pod build menu and manually set the swift version to be the last swift version that pod was built on. Is this the correct way to fix this issue? Am I going to have any repercussions from doing this?
P.S.
I found out it is ok to do this. Yet one of my pods is supposed to be built in swift 3 because it says one that one of the lines of code has been deprecated in swift 4. Ill update this when i figure out what to do in that situation but if one of you gurus wanna take the lead on this one that be great.
So yes the correct way to fix this issue is to go to each pod that can only run on a lower version of swift and manually change the swift version in the build menu. The issue i was having was when i ran the auto update code to swift 5 was that Xcode also changed all the pods to become swift 5. Since those pods could not run on Swift 5 just as of yet it caused build errors.
Also regarding my P.S. note the reason why that happened was because one of the pods commands needed to be changed to the one they updated in the installation options.
Hope this helps anyone else who would come across this issue.
EDIT:
To be even more precise with what is going on is the fact that every time I run pod install there are a few pods that get reset back to swift 5 when it should be run in swift 4. This is because the authors of the pods have not set the swift_version parameter to be the swift version the pod should be using. This causes the app to not be able to compile with build-time errors.
to fix this add this code to your Podfile and it will manually set the swift version everytime. Just remember to remove it for each pod once they are updated cause you will overwrite the creators pod swift version (if they ever think of adding it)
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'KMPlaceholderTextView' || target.name == 'TagWriteView' || target.name == 'UILoadControl'
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
end
I use several pods including AlamoFire, Realm and SwiftyJSON. The pods and their code worked fine up until recently. Now None of my imports work, but gives me the error No such Module.
I have tried to use the command pod disintegrate in the terminal, then installed them again. I have linked them to the project in the general tab as well as the project phase tab.
I have tried following the steps here:
"No such module 'Alamofire'" Xcode won't recognize Alamofire framework
But step two doesn't seem to exist in the build settings and if I comment out all the imports I instead get another 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.
I use swift 4.1 which is verified in the build settings. I use Xcode 9.4.1 if that helps.
Very confused about this problem since everything worked fine until it suddenly stopped.
Please check your podfile if you have mentioned explicitly version for one of the dependency
For e.g
Alamofire, ~>’3.3’
Check for the compatible version for swift 4.1 if you have mentioned explicitly version for one of the pod.
Otherwise Simply remove podfile.lock and try pod update once.
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.
Select the target which uses swift
Go to Build Settings
Type Swift L in search field and scroll to Swift Language Version
Select the language version
I am using SDWebImage for Swift in my project and I am trying to add a Blur effect to an image following the advance usage example found here.
More specifically I am trying to declare a SDImageBlurTransformer but when I start typing the option doesn't come up.
Is an image blur effect possible using SDWebImage package?
Make sure your Podfile refers to version 5.0 of the project and run a pod update. I have the code completion coming up properly on a new project using version 5.0 of SDWebImage.
Here's my Podfile for reference:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'BlurImage' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'SDWebImage', '~> 5.0'
end
my Swift App need to support iOS9, but now I'm using a module that needs 10.0 support.. I can't deploy/build the App anymore.
Module file's minimum deployment target is ios10.0 v10.0
Because I defined 9.0 as the deployment target.
It's because of a use ModuleName on top of a Swift file.
How can I catch this? I already made the code that the Module is only available on iOS 10 and up:
#available(iOS 10, *)
But still get the error because of the use on top of the Swift-file.
You don't mention how you are importing the module that you are using, so I'm going to discuss a couple of ways.
I assume that you are not including the source code in your project,
otherwise you wouldn't have a problem.
I also assume you mean import where you say use.
If there is a reason for requiring 10.0, then you will have to edit the code to annotate the 10.0 methods using #available(iOS 10, *) and provide fallbacks
If you have a separate target in your project that is building a framework, just go into that target and in General > Deployment Info and set the deployment target to 9.0.
If you are using Cocoapods or some other dependency manager, you can still do the above, but it will get wiped out on regeneration. If you are using cocoapods you can use a post install hook in your podfile to accomplish the above:
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['RevealingTableViewCell'].include? target.name
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
end
Note again that this will not help you if there's a good reason the module has a minimum deployment target.
I don't know about other package managers but hopefully this will get you on the right track. Also, note that iOS 9 usage numbers are falling and dropping support for it may be an option as well.
I have an Objective-C project in Xcode 8 Beta 3. Since updating, whenever I try to build I receive the following error:
“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.
Has anyone encountered this? Since it's an Objective-C project there's no build setting to configure Swift. I have also made sure none of the project dependencies or CocoaPods are using Swift. The only solution I have is to use Beta 2. Any ideas how I might fix this issue?
I should also mention I'm running OSX 10.12 Beta 2.
If you are using CocoaPods and want it to be fixed automatically every time you are doing a pod install, then you can add these lines to the end of your Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
EDIT: This problem is now fixed if you use CocoaPods v1.1.1 or later.
Don't forget to remove the ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES setting from your main project targets.
I just found a way to fix it.
Go to the Build settings of the project or library and set the Swift Compiler Version attribute "Use Legacy Swift Language Version" from Unspecified to Yes or NO.
I have been ignoring this problem for a while now and just working on other stuff in the meantime - I finally found the solution to my problem.
Since my project is Objective-C I figured maybe one of the Pods I am using was using Swift, I checked each Pod and none of them were.
The final solution was that my Core Data model was set to generate code in Swift even though I have been manually generating them in the File > New > NSManagedObjectSubclass menu. All I had to do was switch it to Objective-C.
This issue is also visible in Xcode-8.1 . When we add new Target like Extension or Widget and Third party library is integrated in new target with the help of cocopods. After Pod install . We can face same error as above .
Change the Use Legacy Swift Language Version in every Library Build Setting to
No.
If you are using Xcode 8 or later
Go to Build Settings
Find use legacy swift language version
Yes - Swift 2.3
No - Swift 3.0
Add below code in end of the podfile.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
I'm working on a project which has mixed objective-c and swift code
I previously used swift version 2.3 and after upgrading to swift 3 I was unable to build the project. Xcode complained with the mentioned error message.
Apparently, there was still some outdated Swift version specified in my project.pbxproj file. There was swift 3.0.1 specified:
SWIFT_VERSION = 3.0.1;
Whereas, I already had 3.0.2 installed:
$ xcrun swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
Sooo, I fixed it by changing the Swift version in the project-pbxproj file to:
SWIFT_VERSION = 3.0;
Seems the patch level version specifier was too specific.
In my case I have Just do the Following things
Choose project Target=>Go to Build setting=>Search for “Swift Language Version” =>give Value the current Swift version
Thats all It has fixed my Issue
I got the same error. I tried for searching "Use Legacy Swift Language Version", but not found. I am using Xcode 8.3.3
After surfing too much and working around i found this solution, and this worked for me.
Here are the steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)
set "Use Legacy Swift Language Version" to "YES" if you using a old version of swift in your project or any swift 3rd party. "No" if your project uptodate to current swift version.
if you don't configure your swift version , after every update and Install, Pod framework need to specify this.
I actually had to do a search for "Legacy Swift" to be able to change it from unspecified to "Yes" When I simply scrolled down to the section described above, I was not able to change it. I hope this will help someone.
My project is written in Swift. I got that same error with fastlane. What happened was my Xcode auto-updated so I had to update my project to Swift 3.0. Got a ton of errors. Fixing and debugging was taking too much time and it was not worth it at that moment so I decided to install an older version of Xcode. Reverted my code to 2.3. Then fastlane beta wasn't working anymore. Turns out, I needed to set the Command Line Tool to 7.3.
I was having this same issue and solved it by doing the following:
In Project > Build Settings:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Then in my Podfile:
config.build_settings['SWIFT_VERSION'] = '3.0'
Using these three settings removed all warnings and allowed me to compile properly.
The most obscure and what actually got progress for compiling was changing the SWIFT_VERSION in the Podfile from 3 to 3.0 as suggested here.
From XCode 8 onwards, you can use swift 2.3 even though XCode 8 uses swift 3.x as default swift version. To use swift 2.3, just turn on flag Use Legacy Swift Language Version to YES from Build Setting, then XCode will use Swift 2.3 for that project target.
Before trying complicated solutions, here is a basic check you need to do if you are new to Cocoapods and you are having this issue.
You might need to:
Open your Podfile again
Check that the line for platform is not commented out with a '#'. It should finally look like something like :
platform :ios, '10.1' # Put the right version and no #platform here
use_frameworks! # For swift
pod "MyPod" # Your mean pod :)
Save your Podfile, Close Xcode, and Run pod install again
Open your project.xcworkspace
Maybe it's just that.
If not, you can go above ;-)
I had this same problem after updating to xcode 8.3.2 but the option "Use Legacy Swift Language" was gone. This seems to be the option to change now:
Used this fix with Alamofire and other libs and all works ok.
Go to Project Build Setting for project and Target do below two.
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version = Swift 3
Change to latest Swift 3.
Error resolved.
If it's resolved your error fix, please like it.
In Xcode 9 beta. Go to Project Settings, Build Settings, search for Swift Language Version. In Xcode 9 you must specify if you are using Swift 3.2 or Swift 4.
If you change ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to NO still not work, it is because the xcode issue, not your problem. Doing the follow steps:
1.Change ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES property to be YES on the warning target
2.then it will show an warning on left bar which recommend you change to swift 3.0
3.then change back to NO. Rebuild the project, the xcode finally detect your change to NO!
Problem solved in this case!
Just need to check the following settings
File -> Workspace setting ->
1 - Check "Don't show a diagnostic issue about build system deprecation"
2 - set Build System to Legacy Build System (Shared Workspace)
3 - set Build System to Legacy Build System (Pre-User Workspace)