Xcode 看不到 objects 通过 Cocoapods 添加

Xcode can't see objects added via Cocoapods

我有一个 podfile 定义如下 pods.

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

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

然而,当我尝试使用 SSKeychain classes 时,我收到一个

Use of unresolved identifier 'SSKeychain`

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

我的项目根目录中有一个网桥 header,项目配置为使用它。

#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 编译失败,因为找不到文件。所以我假设桥 header 正在工作,因为我的桥 header 现在构建的方式不会生成因找不到 headers.

而导致的任何编译器错误

桥Header

框架搜索路径

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

链接框架

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

我的设置是否遗漏了什么?我已经将近一周无法让 Cocoapods 来处理我的项目了。我什至创建了一个全新的项目,认为我的项目搞砸了;这并没有改变一件事。我不知道从这里该怎么做才能解决这个问题。

编辑

在做了一些额外的研究之后,我 found a blog post 表明你必须在用户 Header 搜索

中包含你的 Pods 目录

一位评论者还提到,如果您正在使用更新的 Cocoapods Frameworks 支持 Swift,那么它需要包含 Frameworks/** 搜索路径。我已经包括了 Pods/** 和 Frameworks/** 但仍然有同样的问题。

further reading 之后,开始听起来这是 Cocoa 的限制pods。据我了解,您不能在项目中同时使用库和框架。

一旦您在 Podfile 中使用 use_frameworks!,Objective-C Pods 就像 SSKeychain 一样也可以作为框架构建。

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

如果您没有使用任何 swift pods,

尝试删除 Podfile 中的 use_frameworks!

运行 在终端上安装 pod。

清理并构建!

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

因此,在我的例子中,桥接头文件不是问题,它在 Podfile 上。

希望对您有所帮助!

阐明你应该做什么才能让它发挥作用:

  1. 确保在你的 Podfileuse_frameworks!
  2. 有没有桥接头并不重要。保持原状
  3. 在您的 SWIFT 文件中只需使用 import Podname

就是这样,你可以开始了。当然,您可能需要清理您的项目或删除派生数据文件夹。构建并使用它。