如何在Swift 4中使用Realm?

时间:2017-06-19 22:23:10

标签: swift xcode realm xcode9-beta swift4

我试图在新的Xcode 9测试版中运行我当前的项目,但是当我这样做时它会说Module compiled with Swift 3.1 cannot be imported in Swift 4.0。我怎么解决这个问题?我没有使用cocoapods。

2 个答案:

答案 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:

  1. 使用CocoaPods。

    CocoaPods总是从源代码构建依赖项。

  2. 使用迦太基。

    默认情况下,Carthage将尝试下载预构建的二进制文件,但如果预构建的二进制文件的版本与正在使用的Xcode版本不同,则将从源代码开始构建。

  3. 从源手动构建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的构建脚本必须以它为目标。无论如何,这为我解决了。