使用 carthage 的 RealmSwift 框架集成问题

Posted

技术标签:

【中文标题】使用 carthage 的 RealmSwift 框架集成问题【英文标题】:RealmSwift framework integration issue using carthage 【发布时间】:2017-04-21 02:00:35 【问题描述】:

我已经使用 carthage 依赖工具集成了 RealmSwift 框架。

我按照以下步骤操作:

    安装 Carthage 0.17.0 或更高版本

    将 github "realm/realm-cocoa" "master" 添加到您的购物车文件中。

    运行迦太基更新。要修改用于构建的 Swift 工具链,请通过 --toolchain 参数指定它。例如:

迦太基更新--toolchain com.apple.dt.toolchain.Swift_2_3

    将 RealmSwift.framework 和 Realm.framework 从 Carthage/Build/ 中的相应平台目录拖到 Xcode 项目“常规”设置的“嵌入式二进制文件”部分。

    ios/tvOS/watchOS:在应用程序目标的“构建阶段”设置中 选项卡,单击“+”图标并选择“新建运行脚本阶段”。创建一个 运行脚本,内容如下:

/usr/local/bin/carthage 复制框架 并在“输入文件”下添加要使用的框架的路径,例如:

$(SRCROOT)/Carthage/Build/iOS/Realm.framework $(SRCROOT)/Carthage/Build/iOS/RealmSwift.framework

现在,

当我尝试构建我的项目时,我收到了这个错误:

使用 Swift 3.0 编译的模块无法在 Swift 2.3 中导入:Carthage/Build/iOS/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64.swiftmodule

我不知道是什么问题。

【问题讨论】:

【参考方案1】:

来自Installation section in Docs:

--no-use-binaries 参数也是必要的,以避免 Carthage 提取预构建的 Swift 3.0 二进制文件。

所以第 3 步的命令应该是这样的

carthage update --toolchain com.apple.dt.toolchain.Swift_2_3 --no-use-binaries

(猜你在主项目中使用的是 Swift 2.3)

【讨论】:

我已经运行了这个脚本。但问题是在 carthage 文件中的代码是 github "realm/realm-cocoa" 和 github "ReactiveX/RxSwift" "rxswift-2.0" 所以这里的领域使用的是最新版本的 swift 而 rxswift 使用的是早期版本的 swift 所以我我无法构建我的项目。 您在项目中使用的 Swift 版本是什么?

以上是关于使用 carthage 的 RealmSwift 框架集成问题的主要内容,如果未能解决你的问题,请参考以下文章

RealmSwift:没有这样的模块“RealmSwift”

如何使用 RealmSwift 存储字典?

ios Carthage

RealmSwift 限制和获取最后 30 条记录到 tableview

如何在 Codable 中使用 List 类型? (RealmSwift)

Carthage