2013-09-30 65 views
5

我想从ASIHttpRequest转换到AFNetworking,但我似乎有一个“使用未声明的标识AFURLSessionManager”错误在我的课下面的行。AFNetworking包括标头

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 

我已经包含在我的头以下:

#import "AFNetworking.h" 
#import "AFURLSessionManager.h" 

现在一定是真的很明显,但现在有一个坏的大脑放屁。

+0

你是如何导入框架的?你在用CocoaPods吗? –

+0

我其实只是将AFNetworking文件夹拖入我的项目,就像它在这里http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking/ –

+0

...你是否从存储库下载AFNetworking,或从教程网站上的链接? – lxt

回答

5

行为简单地通过这行代码在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模块。

模块化是通过使用CocoaPods subspecs来实现的。以进口AFNetworkingNSURLSession模块,你就只能做这样的事情

platform :ios, '7.0' 

pod 'AFNetworking',    '~> 2.0' 
pod 'AFNetworking/NSURLSession', '~> 2.0' 

您仍然可以定位到iOS 6,但你不会得到不兼容的子模块,为的CocoaPods文档中指定。

subspec可以限制父规范的平台。在这种情况下,只有当podfile的目标支持它时,才会由父规范继承。

+0

修正了这个问题,我用cocoapods安装AFNetworking,然后不得不在Build Settings的Header Search Paths中添加“$ {PODS_ROOT}/BuildHeaders”。 –

+0

实际上,如果您使用cocoapods,它会生成一个自动配置的工作区。只需打开工作区并使用它而不是项目。 –