Использование AFJSONRequestOperation On For Loop на iPhone SDK

У меня есть этот код, который я хочу загрузить с помощью AFJSONRequestOperation прежде чем продолжить цикл for, но как-то это не работает. Код ниже находится внутри моего цикла for. Как я могу предотвратить продолжение цикла, даже если запрос еще не завершен? Это поможет мне поместить все значения, полученные из запроса на успешное выполнение, в массив в том порядке, в котором я этого хотел.

Это код:

    NSURL *url = [NSURL URLWithString:[nowShowingTitleListArray objectAtIndex:i]];
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:url];
    [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:theRequest
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
    {
        // Code when success
    }
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)
    {
        NSLog(@"Request Failed with Error: %@", [error localizedDescription]);
    }];

    [operation start];

В настоящее время я делаю это, чтобы убедиться, что они будут выбраны и добавлены в мой массив по порядку:

        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[nowShowingTitleListArray objectAtIndex:i]]];
        NSError *error;
        NSDictionary *JSONDict = [NSJSONSerialization JSONObjectWithData:data
                                                                 options:kNilOptions
                                                                   error:&error];


        if (!JSONDict)
        {
            NSLog(@"Request Failed with Error: %@", [error localizedDescription]);
        }
        else
        {
            // Rest of code
        }

Это также поможет мне минимизировать некоторые проблемы сбоев, возникающие у меня с запросом, когда сетевое соединение внезапно прерывается.

1 ответ

Почему вы выбираете свои данные с одного и того же URL дважды? После использования AFJSONRequestOperation, а затем dataWithContentsOfURL: Вы делаете это в цикле for?

У вас уже есть объект JSON в блоке успеха

success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
 {
    // Code when success
    // write success code here
 }

Вы можете вызывать AFJSONRequestOperation в цикле для нескольких сетевых запросов.

Другие вопросы по тегам