iOS AFNetworking 的块问题

iOS Block issue with AFNetworking

我目前正在学习积木,我想将它们与 AFNetworking 一起使用。我在 Singletone 中制作了方法:

- (void)getAllPlayers:(void (^)(NSArray *playerz, bool succeed))blockPlayers {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:@"https://api.myjson.com/bins/530re" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {



    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

}

我在viewDidLoad中调用了这个方法:

[[Manager sharedInstance]getAllPlayers:^(NSArray *playerz, bool succeed) {
            if (succeed == YES) {
                self.allClubs = playerz;
                [self.tableView reloadData];
            }
        }];

但是没有下载任何东西。

你忘了调用 blockPlayers Completion 处理程序。

- (void)getAllPlayers:(void (^)(NSArray *playerz, bool succeed))blockPlayers {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:@"https://api.myjson.com/bins/530re" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSarray *returnedPLayerz = [NSArray array];
        //Here treat operation and response Object to extract playerz and assing it to returnedPlayerz
        blockPLayers(returnedPlayerz, YES);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        blockPlayers(nil, NO);
        NSLog(@"Error: %@", error);
    }];

}

您在响应对象中从服务器获取了数据。之后你需要在块中解析它和 return:

- (void)getAllPlayers:(void (^)(NSArray *playerz, bool succeed))blockPlayers {
  AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  [manager GET:@"https://api.myjson.com/bins/530re" parameters:nil 
  success:^(AFHTTPRequestOperation *operation, id responseObject) {

     NSArray* players = [self getPlayersFromJson:responseObject];
     blockPlayers(players, YES); 

  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     blockPlayers(nil, NO);
  }];

}

因此您需要创建解析器方法 getPlayersFromJson