0

我有这段代码,我想在继续 for 循环之前急切地使用AFJSONRequestOperation它,但不知何故它不起作用。下面的代码在我的 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
        }

当网络连接突然断开时,这也将帮助我最大限度地减少我在请求中遇到的一些崩溃问题。

4

1 回答 1

0

为什么你要从同一个 URL 获取数据两次?一旦使用 AFJSONRequestOperation 然后使用 dataWithContentsOfURL: 你是否在同一个 for 循环中执行此操作?

您已经在成功块中拥有了 JSON 对象

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

您可以为多个网络请求循环调用 AFJSONRequestOperation。

于 2013-03-22T12:06:28.850 回答