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 上。
希望对您有所帮助!
阐明你应该做什么才能让它发挥作用:
- 确保在你的 Podfile
use_frameworks!
- 有没有桥接头并不重要。保持原状
- 在您的 SWIFT 文件中只需使用
import Podname
就是这样,你可以开始了。当然,您可能需要清理您的项目或删除派生数据文件夹。构建并使用它。
我有一个 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 上。
希望对您有所帮助!
阐明你应该做什么才能让它发挥作用:
- 确保在你的 Podfile
use_frameworks!
- 有没有桥接头并不重要。保持原状
- 在您的 SWIFT 文件中只需使用
import Podname
就是这样,你可以开始了。当然,您可能需要清理您的项目或删除派生数据文件夹。构建并使用它。