9

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

1
  • I had this error message, too, and it turned out to be caused various syntax errors in my code. Once I fixed the syntax errors, the error went away. Commented Nov 6, 2017 at 17:00

3 Answers 3

10

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.

Sign up to request clarification or add additional context in comments.

Comments

7

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.

2 Comments

Oh, correct... but then at the time of stable Xcode 9.1, custom toolchain won't be accepted by iTunes Connect for release.
That's true. I suppose you could always continue to submit using Xcode 9.0 while testing on Xcode 9.1 beta. Sort of annoying that some of the iPhone X functionality is not working in the current Xcode though.
0

Using the last Xcode version solved this issue

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.