【问题标题】:How can I use Realm with Swift 4?如何在 Swift 4 中使用 Realm?
【发布时间】: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


    【解决方案1】:

    更新:从 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:

    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
      

      然后运行以下与您关心的平台相对应的命令,为该平台构建 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 调用中看到的输出。
    • 我无法构建框架,因为它缺少一些源文件。在检查领域源之后,还有一个步骤要做。来自 Realm 文档:如果从 git 克隆,则需要子模块: git submodule update --init --recursive
    • 是的,Realm Swift 与从 Swift 3.0 开始的所有 Swift 版本源代码兼容。
    【解决方案2】:

    作为 bdash 关于如何从源代码手动构建 Realm 的第 3 项的后续内容,并回答 addzo 关于 xcodebuild 错误的问题(我也遇到过):确保为您的 Xcode 设置了 iPhone 6 模拟器9 避免该错误。我想 Realm 的构建脚本必须以它为目标。无论如何,这为我解决了。

    【讨论】:

    • 这里只是一个初学者,但是如果你在 appdelegate 文件中导入 RealmSwift,你会得到那个错误,如果你从那个 appdelegate 文件中删除 import RealmSwift,这个错误就会消失。您可以在其他相关文件中导入 RealmSwift。我没有使用 pods 方法来合并 RealmSwift,而是使用了 Lynda.com 中使用的技术与框架拖放和转储。很容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多