【发布时间】:2016-08-06 07:50:23
【问题描述】:
我有一个array 的用户对象。我需要遍历这个数组,然后,对于每个用户,我需要根据其用户 ID 发出获取数据的请求。此请求是一个异步请求(由于我无法使其同步的原因)。这是使用 dispatch_group 调用编辑的代码:
已编辑
for (User *user in self.userList) {
dispatch_group_enter(self.usersGroup);
[self.wrapper getUserDataWithId:user.userid completion:^(Owner *owner, NSError *error) {
user.owner = owner;
dispatch_group_leave(self.usersGroup);
}];
}
dispatch_group_notify(self.usersGroup, dispatch_get_main_queue(), ^{
// All requests have finished
// Stuff with updated userlist
});
主要问题很明显:当第一个请求完成时,它拥有的用户引用不是发起请求的那个,所以我没有正确的关联。
有什么简单而优雅的方法来解决这个问题吗?提前致谢!
【问题讨论】:
-
该块将捕获
user的值,因此将在正确的对象上设置所有者。您如何等待所有请求完成? -
该块只知道一个 id(字符串),但不引用用户对象。我尝试使用 dispatch_group 等待所有请求完成,但返回的数组没有相关数据
-
添加您尝试使用调度组的代码将帮助人们帮助您。
标签: ios objective-c concurrency queue