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标题。
桥头
框架searchpath
我还将我的项目根目录添加到框架searchpath。
链接的框架
最后,我也将所有的框架链接到项目中。
我是否错过了我的设置? 我现在还没有能够让Cocoapods在我的项目上工作近一个星期。 我甚至创造了一个全新的项目,认为我只是搞砸了; 这并没有改变一件事情。 为了解决这个问题,我不知道从这里做什么。
编辑
在做了一些额外的研究之后,我发现一篇博客post显示你必须在用户头部search中包含你的豆荚目录
一位评论者还提到,如果您使用的是Swift的较新的Cocoapods Frameworks支持,那么它将需要包含框架/ **searchpath。 我已经包括Pods / **和Frameworks / **,但仍然有相同的问题。
经过一番进一步的阅读 ,听起来像是Cocoapods的限制。 据我所知,在一个项目中不能同时使用库和框架。
一旦你使用use_frameworks!
在您的Podfile中,像SSKeychain这样的Objective-C Pod也可以构build为框架。
实际的问题是,使用框架时,只有模块导入工作在桥接报头中。 此外,你可能想完全摆脱桥头,因为使用框架是不必要的,他们可以直接在Swift中导入。
澄清你应该做些什么才能使其工作:
- 一定要有
use_frameworks!
在您的Podfile中 - 如果您有桥接报头 ,则无关紧要。 保持不动
- 在您的SWIFT文件中,只需使用
import Podname
就是这样,你很好走。 当然,这可能会发生,你需要清理你的项目或可能删除派生的数据文件夹 。 build立,你可以使用它。
如果你不使用任何快速豆荚,
尝试删除use_frameworks!
在您的Podfile上。
在terminal上运行pod安装。
清洁和build造!
我花了差不多半个小时修复它,我尝试在searchpath中添加这些path或重新添加桥接头,但错误是相同的。
因此,在我的情况下,桥接头文件不是问题,它在Podfile上 。
我希望它有帮助!