gpt4 book ai didi

ios - AFNetworking,请求完成后回调?

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

我想知道是否有可能在 AFNetworking 完成请求时获得回调?我正在制作一个应用程序,其中我有一个边缘案例,所有下载的项目都被选中 is_deleted (并且不应显示在 UI 中)。如果是这种情况,我想自动尝试下载旧数据(创建新的 AFNetworking 请求)。

我试图再次从自身调用我的 loadData 方法。但它会创建一个无限循环。像这样:

- (void)loadDataIsOlder:(NSNumber *)older
{
NSURLRequest *request = [NSURLRequest requestWithURL:self.streamUrl];
AFJSONRequestOperation *operation;
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id jsonObject) {
NSDictionary *data = [jsonObject objectForKey:@"data"];
NSDictionary *meta = [jsonObject objectForKey:@"meta"];
[...]
for (NSNumber *deleted in (NSArray *)[data valueForKey:@"is_deleted"]) {
if ([deleted boolValue] == YES) {
self.shouldTryToLoadMore = YES;
} else {
self.shouldTryToLoadMore = NO;
}
}
if (self.shouldTryToLoadMore == YES) {
[self loadDataIsOlder:[NSNumber numberWithBool:YES]];
}
} [...]
}

所以,我想知道这是否是其他/更好的方法来做我想做的事。

子问题数组 (NSArray *)[data valueForKey:@"is_deleted"] 由 BOOL int 值组成。我想知道是否可以轻松计算包含整数的数组的值,例如[1, 1, 1, 0] = 3?我想检查数组中的所有值是否都是 1:s。

最佳答案

我不熟悉 AFNetworking

I wonder if it's possible to get a callback when AFNetworking finished a request?

您始终可以设置操作的完成 block (即使在失败时也会调用,在操作运行的线程上,因此请注意 UI 更新)。
像这样:operation.completionBlock = ^{/*你想完成什么*/};

all downloaded items is checked is_deleted

我在你的算法中发现了一个小问题。
您没有正确累积删除 key (您只响应最后一项状态)。
尝试:self.shouldTryToLoadMore &= [deleted boolValue]; 而不是您的 if 语句。

如果您喜欢短路的东西(以避免“可见”循环)尝试:

NSMutableSet* set = [NSMutableSet setWithArray:[data valueForKey:@"is_deleted"]];
[set addObject:@YES];
if ([set count] == 1) {
//You have only deleted items in your request
}

注意
您正在成功 block 中捕获 self,这可能会出现问题(如果您拥有 self 中的操作,则保留循环)。

关于ios - AFNetworking,请求完成后回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176274/

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