首页 > 解决方案 > '没有这样的模块'使用模块化架构和 CocoaPods

问题描述

我正在应用本文中描述的模块化架构。我为系统的每个模块创建了一个子项目。在我的 Presentation 子项目中,我使用的是 RxSwift,所以在我的 Podfile 中,我拥有的是:

platform :ios, '10.0'

use_frameworks!

workspace 'ios-swift-template'

target 'Presentation' do 
  project 'ios-swift-template/Modules/Presentation/Presentation.project'
  pod 'RxSwift'
  pod 'RxCocoa'
end

target 'Networking' do 
  project 'ios-swift-template/Modules/Networking/Networking.project'
  pod 'Moya/RxSwift'
end

target 'ios-swift-template' do
end

即便如此,当我尝试编译项目时,它说 BaseViewController(Presentation Module 中的一个类)找不到 RxSwift。如果我尝试仅构建或运行演示模块,它运行时不会出现错误。

在此处输入图像描述

在我的项目构建阶段中,我将所有模块框架复制到项目中:

在此处输入图像描述

为什么在构建期间找不到 RxSwift?

标签: swiftcocoapods

解决方案


在目标 'ios-swift-template' 以及主要目标可以直接或间接引用的任何其他 pod 下添加 pod 'RxSwift',然后重新运行 pod-install。主要目标看不到内部框架中包含的 pod。阅读此内容以获得更多解释:

https://medium.com/@akfreas/how-to-use-cocoapods-with-your-internal-ios-frameworks-192aa472f64b

如果您深入了解“iOS 中的模块化架构”一文,他的做法完全一样,他首先使用“core_pods”别名定义 RxSwift pod,然后将其包含在框架目标中,并且进一步包含在“application_pods”中包含在应用程序目标中。所以,你看,应用程序目标也必须安装 RxSwift pod。


推荐阅读