Xcode无法看到通过Cocoapods添加的对象

我有一个podfile定义与下面的豆荚。

 platform :ios, '8.0' use_frameworks! target 'LifeStream' do pod 'SSKeychain' pod 'LiveSDK' pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0' end 

我安装了豆荚,打开了我的工作区。 我发现Alamofire的任何用法工作正常,由于它的Swift 2版本导入项目作为框架。

当我尝试使用SSKeychain类但是,我收到一个

使用未parsing的标识符“SSKeychain”

我也尝试在LiveSDK中使用任何类。

我的项目根目录中有一个桥头,并且项目被configuration为使用它。

 #ifndef Header_h #define Header_h #import "SSKeychain/SSKeychain.h" #import "LiveSDK/LiveConnectClient.h" #endif /* Header_h */ 

如果我更改#import

 #import "SSKeychain/SSKeychain.h" 

 #import "SSKeychain.h" 

Xcode无法编译,因为它无法find该文件。 所以我假设网桥标题正在工作,因为我的网桥标题现在build立的方式不会产生任何编译器错误,由于没有find标题。

桥头

Objective-c桥接标头

框架searchpath

我还将我的项目根目录添加到框架searchpath。

框架搜索路径

链接的框架

最后,我也将所有的框架链接到项目中。

链接的框架

我是否错过了我的设置? 我现在还没有能够让Cocoapods在我的项目上工作近一个星期。 我甚至创造了一个全新的项目,认为我只是搞砸了; 这并没有改变一件事情。 为了解决这个问题,我不知道从这里做什么。

编辑

在做了一些额外的研究之后,我发现一篇博客post显示你必须在用户头部search中包含你的豆荚目录

用户头部搜索

一位评论者还提到,如果您使用的是Swift的较新的Cocoapods Frameworks支持,那么它将需要包含框架/ **searchpath。 我已经包括Pods / **和Frameworks / **,但仍然有相同的问题。

经过一番进一步的阅读 ,听起来像是Cocoapods的限制。 据我所知,在一个项目中不能同时使用库和框架。

一旦你使用use_frameworks! 在您的Podfile中,像SSKeychain这样的Objective-C Pod也可以构build为框架。

实际的问题是,使用框架时,只有模块导入工作在桥接报头中。 此外,你可能想完全摆脱桥头,因为使用框架是不必要的,他们可以直接在Swift中导入。

澄清你应该做些什么才能使其工作:

  1. 一定要有use_frameworks! 在您的Podfile中
  2. 如果您有桥接报头 ,则无关紧要。 保持不动
  3. 在您的SWIFT文件中,只需使用 import Podname

就是这样,你很好走。 当然,这可能会发生,你需要清理你的项目或可能删除派生的数据文件夹 。 build立,你可以使用它。

如果你不使用任何快速豆荚,

尝试删除use_frameworks! 在您的Podfile上。

在terminal上运行pod安装。

清洁和build造!

我花了差不多半个小时修复它,我尝试在searchpath中添加这些path或重新添加桥接头,但错误是相同的。

因此,在我的情况下,桥接头文件不是问题,它在Podfile上

我希望它有帮助!