无法同时使用Cocoapods的Swift和Obj-C库

Adr*_*det 15 objective-c realm ios cocoapods swift

我刚刚开始了一个新的Swift项目,我想使用不同的库.特别是,我想使用一个Obj-C库Realm.io.但是,我还想使用纯粹的Swift库,如Alamofire或Dollar.

我使用Cocoapods来管理我的依赖项.我使用最新版本(0.37.0)和新use_frameworks!标志.pod install随时都是成功的.

不幸的是,当我尝试构建我的项目时,我得到两个错误(对于我的主要目标):

  • Umbrella header Realm.h not foundmodule.modulemap
  • Could not build Objective-C module Realm 从任何文件使用 import Realm

其他进口工作正常.

我注意到以下内容:如果我删除纯Swift库use_frameworks,一切正常.我知道Cocoapods目前的这个问题.但是,Realm要求开发人员使用该标志应该不是问题.

这是我的Podfile:

platform :ios, '8.0'
use_frameworks!

target 'rothrock' do
  pod 'Realm'
  pod 'Cent'
  pod 'SwiftyJSON'
  pod 'Alamofire'
end

target 'rothrockTests', :exclusive => true do
end
Run Code Online (Sandbox Code Playgroud)

我没有使用桥接头.我是不是该?

任何想法或解决方法?

Adr*_*det 15

好的,这是完整的演练:

  1. 使用Cocoapods和use_frameworks!标志安装依赖项.
  2. 当您需要使用Objective-C依赖项时,请创建一个Bridging标头.您可以通过将Objective-C类导入到Swift项目中来轻松创建一个,而不是将其删除(向导应该询问您是否需要桥接头).否则,创建一个新的头文件.然后,导航到目标配置并在Swift Compiler - Code Generation>中输入文件的名称Objective-C Bridging header.
  3. 仍然在目标配置中,在Search Paths> User Header Search Paths:Podsas value中添加一个新条目并将其标记为递归.
  4. import从您的Objective-C库中删除代码中的所有指令.
  5. 建立你的项目.你应该取得成功.