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

时间:2015-04-27 20:24:35

标签: ios objective-c swift cocoapods realm

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

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

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

    来自Umbrella header Realm.h not found
  • module.modulemap 来自使用Could not build Objective-C module Realm
  • 的任何文件中的
  • import Realm

其他进口工作正常。

我注意到以下内容:如果删除纯Swift库和use_frameworks,一切正常。我知道this current issue from 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

我没有使用桥接头。我应该吗?

任何想法或解决方法?

2 个答案:

答案 0 :(得分:2)

您需要一个桥接标头并在那里导入Objective-C库标题。

如果您只使用Realm,可以查看Swift http://realm.io/docs/cocoa/的此文档(在选项卡中转到CocoaPods)

<强>夫特

  1. 安装CocoaPods 0.36.0或更高版本([sudo] gem install cocoapods)。
  2. 在您的Podfile中,将use_frameworks!pod 'Realm'添加到您的应用目标。
  3. 从命令行运行pod install。
  4. 使用CocoaPods生成的.xcworkspace文件来处理您的项目!
  5. 下载最新版本的Realm并解压缩。
  6. 将Swift / RLMSupport.swift中的文件拖到Xcode项目的File Navigator中,选中Copy items if if needed复选框。

答案 1 :(得分:1)

我刚刚在我上面提到的一些项目中安装了 Realm 库,例如 Alamofire SwiftyJSON 以及其他它在构建项目时工作正常,甚至可以放import Realm,根本没有编译错误。

我正在使用Cocoapods 0.36.0,稳定版本,这是我的PodFile:

source 'https://github.com/CocoaPods/Specs.git'

use_frameworks! 

platform :ios, '8.0'

link_with 'ApiWorkflow', 'ApiWorkflowTests'

pod 'SwiftyJSON', '~> 2.2'
pod 'Alamofire', '~> 1.2'
pod 'Typhoon', '~> 3.0'
pod 'SwiftCSV', '~> 0.1'
pod 'Realm'

我希望这可以帮到你