我正在使用 cocoapods 安装 AFNetworking 和 AFOAuth2Client。问题是它无法导入头文件 AFJSONREquestOperation。我不知道这种依赖在哪里。它是 AFNetworking 的另一个 pod 或扩展吗?
4 回答
这取决于您安装了 AFNetworking 2.x 版本,但 AFOAuth2 使用的是 1.x 版本(最新的 1.x 是 1.3.3)
如果您使用 Cocoapods,只需写入 pod 文件 pod 'AFNetworking', '1.3.3' 然后运行“pod install”
@LIAL 的回答是正确的——截至目前,AFOAuth2Client 与 AFNetworking 2.0 不兼容。有一个开放的拉取请求https://github.com/AFNetworking/AFOAuth2Client/pull/55应该使 AFOAuth2Client 与 AFNetworking 2.0 一起工作。
您可以通过将 Podfile for AFOAuth2Client 行修改为如下所示来分叉mlwelles 的回购或使用https://github.com/mlwelles/AFOAuth2Client.git :
pod 'AFOAuth2Client', :git => 'git://github.com/mlwelles/AFOAuth2Client.git'
尝试像这样导入它:
#import <AFNetworking/AFJSONRequestOperation.h>
如果你不能那样做,请确保你使用的是 Xcode 5。使用 Xcode 4.6.3 时发生在我身上。
基于 AFHTTPRequestOperationManager 的代码
AFNetworking 2.x
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
AFNetworking 3.x
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
基于 AFHTTPRequestOperation 的代码
AFNetworking 2.x
NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[[NSOperationQueue mainQueue] addOperation:op];
AFNetworking 3.x
NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
这个答案对使用 AFNetworking 2.x 和 3.x 的用户都有帮助 谢谢。