AFNetworking 包含标头
Posted
技术标签:
【中文标题】AFNetworking 包含标头【英文标题】:AFNetworking include headers 【发布时间】:2013-09-30 17:59:39 【问题描述】:我正在尝试从 ASIHttpRequest 转换为 AFNetworking,但我似乎在我的课程的下一行出现“使用未声明的标识符 AFURLSessionManager”错误。
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
我在标题中包含以下内容:
#import "AFNetworking.h"
#import "AFURLSessionManager.h"
这一定是很明显的事情,但现在脑子里放了一个坏屁。
【问题讨论】:
你是如何导入框架的?你在使用 CocoaPods 吗? 我实际上只是将 AFNetworking 文件夹拖到我的项目中,就像这里有它一样 mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking ...您是从存储库还是从教程站点上的链接下载 AFNetworking? 链接可能有问题。不能完全解决这个问题,但认真考虑切换到 CocoaPods。这需要您 5 分钟,并且可以为您节省数小时的依赖项管理时间。 @ChamaraPaul 您的项目是否支持 iOS 6?在这种情况下,AFURLSessionManager 不会自动安装 【参考方案1】:AFURLSessionManager.h
中的这行代码简单解释了该行为
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090)
AFURLSessionManager
使用NSURLSession
,它在 iOS 7(和 OSX 10.9)上可用。
如果您的目标是 iOS 6,AFURLSessionManager
将无法使用,它会在编译时被删除。这就是您收到错误的原因。
将 iOS 7 设置为最小部署目标将修复编译错误,即使它可能不符合您的需要。
也就是说,我的建议是使用 CocoaPods 来管理第三方依赖,例如 AFNetworking
。
AFNetworking 2.0
是一个模块化框架,这意味着您可以根据需要选择要使用的模块。内核支持iOS 6,但有些模块只支持iOS 7,比如NSURLSession
模块,就是AFURLSessionManager
所在的模块。
模块化是通过使用CocoaPods subspecs 实现的。为了导入 AFNetworking
和 NSURLSession
模块,您只需要执行类似
platform :ios, '7.0'
pod 'AFNetworking', '~> 2.0'
pod 'AFNetworking/NSURLSession', '~> 2.0'
您仍然可以以 iOS 6 为目标,但您不会得到不兼容的子模块,如 CocoaPods 文档中所述。
子规范可以限制父规范的平台。在这种情况下,只有当 podfile 的目标支持它时,它才会被父规范继承。
【讨论】:
修复它,我使用 cocoapods 安装 AFNetworking,然后必须在构建设置中将“$PODS_ROOT/BuildHeaders”添加到我的标题搜索路径中。 实际上,如果您使用 cocoapods,它会自动生成一个工作区。只需打开工作区并使用它而不是项目。以上是关于AFNetworking 包含标头的主要内容,如果未能解决你的问题,请参考以下文章
如何删除 AFNetworking 中的 http 标头选项?