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

Joh*_*ger 16 xcode ios cocoapods xcode7-beta2

我已经podfile定义了以下pod.

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
Run Code Online (Sandbox Code Playgroud)

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

当我尝试使用SSKeychain课程时,我会收到一个

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

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

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

#ifndef Header_h
#define Header_h

#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"

#endif /* Header_h */
Run Code Online (Sandbox Code Playgroud)

如果我改变了#import

#import "SSKeychain/SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)

#import "SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)

Xcode无法编译,因为它无法找到该文件.所以我假设桥接头正在工作,因为我的桥接头现在构建的方式不会因为找不到头而导致任何编译器错误.

桥头

Objective-c桥接头

框架搜索路径

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

框架搜索路径

链接的框架

最后,我还将所有框架链接到项目中.

链接框架

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

编辑

在做了一些额外的研究之后,我发现了一篇博文,显示你必须在用户标题搜索中包含你的Pods目录

用户标题搜索

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

进一步阅读之后,它开始听起来像是Cocoapods的限制.据我所知,您不能在项目中同时使用库和框架.

Neo*_*cho 10

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

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

  • 如果你们中的一位能够更清晰地展示解决方案,我将非常感激...我不知道我是否可以完全摆脱我的桥接头,因为我整合了一些像parse.com这样的库,用目标写成C也是. (3认同)

Sim*_* C. 7

澄清你应该做些什么来使它工作:

  1. 一定use_frameworks!在你的Podfile中
  2. 如果你有一个Bridging标头没关系.保持不变
  3. 在您的SWIFT文件中使用 import Podname

就是这样,你很高兴.当然,您可能需要清理项目或删除派生数据文件夹.构建,你可以使用它.