Xcode无法通过Cocoapods

时间:2015-06-28 19:23:02

标签: ios xcode cocoapods xcode7-beta2

我使用以下广告连接定义了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

我安装了pod并打开了我的工作区。我发现Alamofire的任何使用都可以正常工作,因为它将Swift 2版本作为框架导入项目。

但是当我尝试使用SSKeychain类时,我会收到

  

使用未解析的标识符' SSKeychain`

同样适用于我尝试在LiveSDK中使用的任何类。

我的项目根目录中有一个桥接头,项目已配置为使用它。

#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无法编译,因为它无法找到该文件。所以我假设桥接头正在工作,因为我现在构建桥接头的方式不会因为找不到头而导致任何编译器错误。

桥接标题

Objective-c Bridging header

框架搜索路径

我还将项目根目录添加到框架搜索路径中。

Framework search paths

关联框架

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

Linked frameworks

我的设置错过了什么?我已经有一周没能让Cocoapods在我的项目上工作了。我甚至创建了一个全新的项目,认为我的搞砸了;这并没有改变一件事。我不知道该怎么做才能解决这个问题。

修改

在做了一些额外的研究后,我found a blog post显示您必须在用户标题搜索中包含您的Pods目录

User Header Search

评论者还提到,如果您使用较新的Cocoapods Frameworks支持Swift,则需要包含Frameworks / **搜索路径。我已经包含了Pods / **和Frameworks / **,但仍有相同的问题。

在一些further reading之后,它开始听起来像是Cocoapods的限制。据我所知,您不能在项目中同时使用库和框架。

3 个答案:

答案 0 :(得分:10)

在Podfile中使用use_frameworks!后,像SSKeychain这样的Objective-C Pod也可以构建为框架。

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

答案 1 :(得分:6)

澄清你应该做些什么来使其发挥作用:

  1. 确保在您的Podfile中有use_frameworks!
  2. 如果您有桥接标题,则无关紧要。保持不变
  3. SWIFT文件中,只需使用 import Podname
  4. 那就是它,你很高兴。当然,您可能需要清理项目或删除派生数据文件夹。构建并且您可以使用它。

答案 2 :(得分:2)

如果你没有使用任何快速吊舱,

尝试删除Podfile上的use_frameworks!

在终端上运行pod install。

清洁&建立!

我花了将近半个小时来修复它,我尝试在搜索路径上添加这些路径或重新添加桥接头但错误是相同的。

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

我希望它有所帮助!