未知接收者'AFHTTPRequestOperation';你的意思是'AFHTTPRequestSerializer'
Posted
技术标签:
【中文标题】未知接收者\'AFHTTPRequestOperation\';你的意思是\'AFHTTPRequestSerializer\'【英文标题】:Unknown receiver 'AFHTTPRequestOperation' ; did you mean 'AFHTTPRequestSerializer'未知接收者'AFHTTPRequestOperation';你的意思是'AFHTTPRequestSerializer' 【发布时间】:2016-09-06 06:29:52 【问题描述】:我正在学习AFNetworking
套件。我关注了这个tutorial。现在我停留在评论 2 请参阅下面的代码 AFHTTPRequestOperation
。
我使用 cocoapods 导入了 AFNetworking
。
这是我的代码:
- (IBAction)jsonTapped:(id)sender
// comment 1
NSString *string = [NSString stringWithFormat:@"%@weather.php?format=json", BaseURLString];
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// comment 2
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
// comment 3
self.weather = (NSDictionary *)responseObject;
self.title = @"JSON Retrieved";
[self.tableView reloadData];
failure:^(AFHTTPRequestOperation *operation, NSError *error)
// comment 4
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
];
// comment 5
[operation start];
现在在编译时出现错误,请参阅屏幕截图:
【问题讨论】:
问题是您在导入 AFNetworking 3.0 时正在使用 AFNetworking 2.0 的教程。由于您使用了 CocoaPods,您可以指定 AFNetworking 的版本以使其工作,否则这里是迁移指南:github.com/AFNetworking/AFNetworking/wiki/… Larme 是对的,看看github.com/AFNetworking/AFNetworking/issues/3125 的类似问题,你也必须像#import 一样导入 尝试更改为 2.0 无效,我认为 AFHTTPRequestOperation 不存在,此实现还有其他替代方案吗? 【参考方案1】:在导入任何 AFNetworking
类之前,请确保在项目中正确包含 AFNetworking
。可能你没有正确导入套件。
不要使用 UIAlertView
已弃用的 ios
9 使用 UIAlertController
请参阅下面的代码。
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:@"text mssg" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
// Ok action code here
];
UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"Other" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
// Other action code here
];
[alert addAction:okAction];
[alert addAction:otherAction];
[self presentViewController:alert animated:YES completion:nil];
【讨论】:
UIAlertView/UIAlertController 在这里无关紧要:您不知道 OP 的最小 iOS 目标是什么。所以你应该只坚持你答案的第一段。 @Cœur,不要以为这无关紧要,毕竟这是一个更正,如果 op 在第一段中找到了他的答案,那么一切都会好起来的。【参考方案2】:你可以使用 AFHTTPRequestOperationManager
- (void)apiRequestForPOSTWithServiceName:(NSString *)serviceName andParameters:(NSDictionary *)parameter withCompletion:(void(^)(id response, BOOL isSuccess))completion
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSString *url = [NSString stringWithFormat:@"%@%@", BASE_URL, serviceName];
[manager POST:url parameters:parameter success:^(AFHTTPRequestOperation *operation, id responseObject)
//NSLog(@"JSON: %@", responseObject);
completion(responseObject,YES);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
completion(error,NO);
];
编码愉快...!!
【讨论】:
以上是关于未知接收者'AFHTTPRequestOperation';你的意思是'AFHTTPRequestSerializer'的主要内容,如果未能解决你的问题,请参考以下文章
接收 PHP 警告:模块 '[module name]' 已加载到第 0 行的未知中