gpt4 book ai didi

ios - AFNetworking 故障 block

转载 作者:行者123 更新时间:2023-11-29 03:11:24 24 4
gpt4 key购买 nike

我正在使用 afnetworking 2.0 来显示 youtube 视频。当我遇到连接错误时,我会打开一个警报 View ,如果我单击“确定”,我想停止请求。

警报 View 显示正确,但当我单击“确定”时,请求没有停止并且我看到了事件指示器。

如何停止请求?

这是下面的代码:

-(void)loadData {

NSString *urlAsString = @"https://gdata.youtube.com/feeds/api/videos?q=wankel&v=2&max-results=50&alt=jsonc";

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] init];
activityIndicator.color = [UIColor blackColor];
activityIndicator.backgroundColor = [UIColor blackColor];
[activityIndicator startAnimating];
[self.view addSubview:activityIndicator];
activityIndicator.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2 );

NSURL *url = [NSURL URLWithString:urlAsString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

self.moviesArray = [responseObject valueForKeyPath:@"data.items"];
NSLog(@"%@", moviesArray);

self.thumbnailsArray = [responseObject valueForKeyPath:@"data.items.thumbnail"];

self.moviesDetailArray = [responseObject valueForKeyPath:@"data.items"];

[activityIndicator setHidden:YES];
[activityIndicator stopAnimating];


[self.collectionView reloadData];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@", error.localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Try again", nil];
[activityIndicator setHidden:YES];
[activityIndicator stopAnimating];
[alertView show];
}];

[operation start];
}

最佳答案

您是否尝试过将操作添加到 AFHTTPRequestOperationManager ?管理器有一个 operationQueue 属性。您可以从那里取消操作。

当操作失败时,从共享管理器中停止操作。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.operationQueue cancelAllOperations];

编辑:如果您正在寻找特定的操作,您可以遍历队列中的操作:

for (NSOperation *operation in manager.operationQueue.operations) {
// check if this is the right operation, and cancel it.
}

关于ios - AFNetworking 故障 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com