Récupérer des données en utilisant AFHTTPRequestOperationManager

Bonjour à  tous,


 


Dans le cadre d'un nouveau projet, j'ai des données dans un AFHTTPRequestOperationManager que je souhaite récupérer (dans le but de les réutiliser plus tard).


 


A l'heure actuelle ma méthode est de type void, j'ai bien essayé de faire en sorte qu'elle renvoie un tableau, mais le tableau est toujours nul (vu qu'il est rempli dans le "succeed").


 


Voila le bout de code que j'aimerais modifier:



AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSString *url = [NSString stringWithFormat:kWeatherUrl, userCity, userDays];
[manager GET:url
parameters:nil

success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject)
{
NSMutableArray *datas = [[NSMutableArray alloc] init];
NSArray *responseArray = [responseObject objectForKey:kKeyDatas];
for (NSDictionary *dataDictionary in responseArray)
{
MyData *data = [[MyData alloc] initWithJSONDictionary:dataDictionary];
[datas data];
}

NSLog(@Success: %@", datas); // renvoie ma liste de datas
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@Error: %@", error);
}];

Merci d'avance à  ceux qui sauront m'aider la dessus :)


Réponses

  • Hello,


     


    C'est toujours la même histoire des blocks.



    - (void)fetchWeatherDataCompletionHandler:(void (^) (NSArray *datas, NSError *error))handler {

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    ....
    NSLog(@Success: %@", datas); // renvoie ma liste de datas
    completion([datas copy], nil);
    }
    failure:^(AFHTTPRequestOperation *operation, NSError *error)
    {
    completion(nil, error);
    }];
    }
  • CéroceCéroce Membre, Modérateur
    février 2016 modifié #3
    Ta méthode doit prendre des blocs en paramètres. ça donne quelque chose comme ça (si je ne me suis pas trompé dans la syntaxe des blocs):
     -(void) fetchMyDataSuccess:(void (^)(MyData *data))successBlock failure:(void (^)(NSError *error))failureBlock {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSString *url = [NSString stringWithFormat:kWeatherUrl, userCity, userDays];
    [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) {
    NSArray *responseArray = [responseObject objectForKey:kKeyDatas];
    for (NSDictionary *dataDictionary in responseArray) {
    MyData *data = [[MyData alloc] initWithJSONDictionary:dataDictionary];
    if(successBlock) {
    successBlock(data);
    }
    }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    if(failureBlock) {
    failureBlock(error);
    }
    }];
    }
  • Impec merci les gars :)


Connectez-vous ou Inscrivez-vous pour répondre.