【发布时间】:2017-06-19 22:23:09
【问题描述】:
我正在尝试在新的 Xcode 9 beta 中运行我当前的项目,但是当我这样做时,它会显示 Module compiled with Swift 3.1 cannot be imported in Swift 4.0。我怎么解决这个问题?我没有使用 cocoapods。
【问题讨论】:
标签: swift xcode realm xcode9-beta swift4
我正在尝试在新的 Xcode 9 beta 中运行我当前的项目,但是当我这样做时,它会显示 Module compiled with Swift 3.1 cannot be imported in Swift 4.0。我怎么解决这个问题?我没有使用 cocoapods。
【问题讨论】:
标签: swift xcode realm xcode9-beta swift4
更新:从 2017 年 9 月 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 版本不同的 Swift 版本,则会回退到从源代码构建。
从源代码手动构建 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 相同的编译器。
【讨论】:
sh build.sh ios-swift 或我列出的任何其他构建命令时创建的。如果您没有看到该目录,我建议您分享您在 build.sh 调用中看到的输出。
作为 bdash 关于如何从源代码手动构建 Realm 的第 3 项的后续内容,并回答 addzo 关于 xcodebuild 错误的问题(我也遇到过):确保为您的 Xcode 设置了 iPhone 6 模拟器9 避免该错误。我想 Realm 的构建脚本必须以它为目标。无论如何,这为我解决了。
【讨论】: