如何在Swift 4中使用Realm?

Len*_* P. 10 xcode realm swift swift4 xcode9-beta

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

bda*_*ash 15

更新:自2017年3月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版本不同的Swift版本,则将从源代码回退.

  3. 从源手动构建Realm,然后像构建Realm提供的预构建二进制文件一样集成构建的框架.

    你可以通过从Git中签出一个发布标签来做到这一点:

    git clone --recursive https://github.com/realm/realm-cocoa.git
    cd realm-cocoa
    git checkout v2.10.0
    
    Run Code Online (Sandbox Code Playgroud)

    然后运行以下命令中的任何一个对应于您关心的平台,以构建该平台的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
    
    Run Code Online (Sandbox Code Playgroud)

    构建的框架将放置在buildRealm源中的目录中,然后您可以像在Realm提供的预构建二进制文件中那样集成它们.

    这些构建的框架也应该与使用Swift 3.2的应用程序一起使用,因为它使用与Swift 4.0相同的编译器.

  • 我无法构建框架,因为它缺少一些源文件.在检查领域来源之后还有一个步骤要做.来自Realm docs:如果从git克隆,则需要子模块:git submodule update --init --recursive (2认同)