我试图在新的Xcode 9测试版中运行我当前的项目,但是当我这样做时它会说Module compiled with Swift 3.1 cannot be imported in Swift 4.0
。我怎么解决这个问题?我没有使用cocoapods。
答案 0 :(得分:15)
更新:自2017-09-14发布的v2.10.1起,Realm的预建二进制文件包括使用Xcode 9为Swift 3.2和4.0构建的框架。它不再需要自己构建它们。
以下信息仍然适用于希望将来使用Realm和Xcode的预发布版本的任何人。
如果您目前正在集成Realm的预建二进制文件,那么您需要从源代码切换到构建Realm才能支持Swift 3.2和4.0,因为Realm不发布预先发布的预编译二进制文件Xcode的版本。您可以通过以下三种方式之一从源构建Realm:
使用CocoaPods。
CocoaPods总是从源代码构建依赖项。
使用迦太基。
默认情况下,Carthage将尝试下载预构建的二进制文件,但如果预构建的二进制文件的版本与正在使用的Xcode版本不同,则将从源代码开始构建。
从源手动构建Realm,然后像构建Realm提供的预构建二进制文件一样集成构建的框架。
您可以通过从Git中查看发布代码来执行此操作:
git clone --recursive https://github.com/realm/realm-cocoa.git
cd realm-cocoa
git checkout v2.10.0
然后运行以下命令中的任何一个对应于您关心的平台,为该平台构建Realm Swift框架:
REALM_SWIFT_VERSION=4.0 sh build.sh ios-swift
REALM_SWIFT_VERSION=4.0 sh build.sh osx-swift
REALM_SWIFT_VERSION=4.0 sh build.sh watchos-swift
REALM_SWIFT_VERSION=4.0 sh build.sh tvos-swift
构建的框架将放置在Realm源中的build
目录中,然后您可以像在Realm提供的预构建二进制文件中那样集成它们。
这些构建的框架也应该与使用Swift 3.2的应用程序一起使用,因为它使用与Swift 4.0相同的编译器。
答案 1 :(得分:2)
作为bdash第3项的后续内容,关于如何从源手动构建Realm,并回答addzo关于xcodebuild错误的问题(我也遇到过):确保iPhone为您的Xcode 9设置了6个模拟器以避免该错误。我认为Realm的构建脚本必须以它为目标。无论如何,这为我解决了。