Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Module compiled with Swift 4.0 cannot be imported in Swift 3.2.1

Swift 4.0 modules were fine in Swift 3.2 apps with Xcode 9.0.

But now, with Xcode 9.1, I get:

Module compiled with Swift 4.0 cannot be imported in Swift 3.2.1

Or:

Module compiled with Swift 4.0 cannot be imported in Swift 4.0.1

like image 948
Cœur Avatar asked Oct 10 '17 06:10

Cœur


2 Answers

It's possible to build using Swift 3.2 in Xcode 9.1 beta 2 by installing the Xcode 9.0 toolchain and using that to build your project.

Swift Toolchain Image

Then choose the Swift 4.0 release under the Xcode -> Toolchains menu.

You should now be able to build with either Swift 3.2 or 4.0 in Xcode 9.1 b2.

like image 68
Hung Truong Avatar answered Nov 06 '22 07:11

Hung Truong


Swift 4.0 is compatible with Swift 3.2 only.
Swift 4.0.1 is compatible with Swift 3.2.1 only.

So:

  • you can't mix 4.0 and 3.2.1
  • you can't mix 4.0.1 and 3.2
  • you can't mix 4.0 and 4.0.1
  • you can't mix 3.2.1 and 3.2

To formulate it differently:

  • you can mix Xcode 9.0 supported Swift versions together
  • you can mix Xcode 9.1 supported Swift versions together
  • you can't mix Xcode 9.0 and Xcode 9.1 Swift versions

If the module was built by you, simply rebuild it with the same Xcode.
If the module was built by a third party, request an Xcode 9.1 compatible build.

like image 34
Cœur Avatar answered Nov 06 '22 05:11

Cœur