AFHTTPSessionManager GET方法语法错误?

时间:2016-12-20 06:53:50

标签: objective-c afnetworking

这是我的代码

AFHTTPSessionManager *manger = [[AFHTTPSessionManager alloc] init];
[manger GET:requestUrl parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

}];

我从Xcode收到两个错误。

  1. Unknown type name 'id'

  2. Incompatible block pointer types sending 'void (^)(NSURLSessionDataTask * _Nonnull __strong, int)' to parameter of type 'void (^ _Nullable)(NSURLSessionDataTask * _Nonnull __strong, id _Nullable __strong)'

  3. 为什么会这样?我在我的头文件中导入了AFNetworking文件。我的Xcode版本是8.2,AFNetworking版本是3.1。当我把这个代码片段放在我的其他项目中时,没有错误。真的很混乱我。任何人可以帮忙吗? enter image description here 我使用Carthage导入AFNetwoking,仍然是同样的错误。:(

2 个答案:

答案 0 :(得分:0)

你的方法应该是这样的

-(void)callWebserviceWithParams:(NSMutableDictionary *)_params
                        action:(NSString *)_action
                        success:(void (^)(id))_success
                        failure:(void (^)(NSError *))_failure

{
    if ([[AFNetworkReachabilityManager sharedManager] isReachable]) {

        //AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

       // manager.responseSerializer = [AFHTTPResponseSerializer serializer];
        NSString *url = [BASE_URL stringByAppendingString:_action];
        AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:url]];
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
        [manager POST:url parameters:_params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"response = %@", responseObject);
        if( _success )
        {
            _success( responseObject ) ;
        }
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"error = %@", error);
            if( _failure )
            {
                _failure( error) ;
            }
        }];
    }
}

答案 1 :(得分:0)

最终解决方案:我重新创建项目。并将旧代码迁移到新项目。它工作。但仍然知道旧版本代码不起作用的原因。