未知接收者'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 行的未知中

从服务器接收到的字段的未知字符集索引

使用 Parse 和 Facebook SDK 的未知接收器 FBSDKRequestConnection

接收错误<未知>:0:错误:没有这样的文件或目录:

通过html表单发送和接收未知数量复选框的状态

neo4j 接收器连接器 - Avro - 未知的魔术字节