gpt4 book ai didi

ios - TWRequest 在后台

转载 作者:行者123 更新时间:2023-11-29 13:40:07 25 4
gpt4 key购买 nike

- (void)fetchImages {
if (self.profileImages == nil) {
self.profileImages = [[NSMutableDictionary alloc] initWithCapacity:200];
}
dispatch_async(dispatch_get_global_queue(0, 0), ^{
for (id tweet in self.timeline) {
TWRequest *fetchUserImageRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://api.twitter.com/1/users/profile_image/%@", [tweet valueForKeyPath:@"user.screen_name"]]] parameters:nil requestMethod:TWRequestMethodGET];
[fetchUserImageRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if ([urlResponse statusCode] == 200) {
[self.profileImages setObject:[UIImage imageWithData:responseData] forKey:[tweet valueForKeyPath:@"user.screen_name"]];
NSArray *indexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:[self.timeline indexOfObject:tweet] inSection:0]];
[self.tableView reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationNone];
}
}];
}
});
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FavoriteCell"];

// configure cell
id tweet = [self.timeline objectAtIndex:[indexPath row]];
UILabel *tweetLabel = (UILabel *)[cell viewWithTag:102];
tweetLabel.text = [tweet objectForKey:@"text"];
UILabel *usernameLabel = (UILabel *)[cell viewWithTag:101];
usernameLabel.text = [tweet valueForKeyPath:@"user.name"];
UIImageView *profileImage = (UIImageView *)[cell viewWithTag:100];
profileImage.image = [self.profileImages objectForKey:[tweet valueForKeyPath:@"user.screen_name"]];
UILabel *dateLabel = (UILabel *)[cell viewWithTag:103];
NSString *labelString = [[tweet objectForKey:@"created_at"] substringToIndex:10];
dateLabel.text = labelString;

return cell;

}

我得到了时间轴,然后想要获取时间轴中所有用户的个人资料图像。我需要遍历推文并获取图像。我很好奇如何确定何时获取所有图像然后重新加载 tableview。到目前为止,这还没有发生。 TWRequest 在表重新加载后运行。我在这里做错了什么?也许有更好的方法来做到这一点?

非常感谢。

最佳答案

那是因为 [TWRequest performRequestWithHandler:] 是一个异步方法。为什么需要重新加载整个表?为什么不在获取图像时(在处理程序 block 的末尾)重新加载单元格。

如果您真的想重新加载整个表,只需对所有已完成的请求进行计数,并在所有完成后重新加载表。

如果你想重新加载单个单元格,你可以这样做:

dispatch_sync(dispatch_queue_get_main(), ^{

[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:0];

}

关于ios - TWRequest 在后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418492/

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