17

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 类时,我收到一个

使用未解析的标识符“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 桥接头

框架搜索路径

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

框架搜索路径

链接框架

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

链接框架

我的设置是否遗漏了什么?近一个星期以来,我一直无法让 Cocoapods 为我的项目工作。我什至创建了一个全新的项目,认为我的只是搞砸了;这并没有改变任何事情。我不知道该怎么做才能解决这个问题。

编辑

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

用户标题搜索

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

经过一些进一步的阅读,它开始听起来像是 Cocoapods 的限制。据我了解,您不能在项目中同时使用库和框架。

4

3 回答 3

10

一旦你use_frameworks!在 Podfile 中使用,像 SSKeychain 这样的 Objective-C Pod 也会被构建为框架。

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

于 2015-06-29T08:49:34.177 回答
8

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

  1. 确保use_frameworks!在你的 Podfile中有
  2. 是否有桥接头并不重要。保持不变
  3. 在您的SWIFT 文件中,只需使用 import Podname

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

于 2016-11-18T18:00:35.470 回答
2

如果您不使用任何 swift pod,

尝试删除use_frameworks!Podfile 上的 。

在终端上运行 pod install。

清洁和建造!

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

因此,就我而言,桥接头文件不是问题,它在Podfile上。

我希望它有帮助!

于 2016-08-17T07:03:28.627 回答