//01>>全局变量group
dispatch_group_t group = dispatch_group_create();
//循环读取用户数据
for (Department *department in resultArr) {
//02>>进入组(进入组和离开组必须成对出现, 否则会造成死锁)
dispatch_group_enter(group);
[userApi get_u_all_by_dep_id:u_id access_token:access_token dep_id:department.id Succeed:^(User_utd *resultModel) {
User_utd *user_utd=resultModel;
[db createTableAndIndexesOfName:NSStringFromClass(Simple_user.class) withClass:Simple_user.class];
[db insertOrReplaceObjects:user_utd.user into:NSStringFromClass(Simple_user.class)];
[db createTableAndIndexesOfName:NSStringFromClass(User_to_dep.class) withClass:User_to_dep.class];
[db insertOrReplaceObjects:user_utd.utd into:NSStringFromClass(User_to_dep.class)];
//03>>进入组(进入组和离开组必须成对出现, 否则会造成死锁)
dispatch_group_leave(group);
} failure:^(NSError *error) {
}];
}
//04>>当执行for循环的时候,一次次执行异步任务下载数据,只有当这两个异步任务都执行完毕了才会执行dispatch_grout_notify方法。
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//读取完数据之后,再将部门,用户,标记插入。
[self insertDepartment:resultArr andUtd_mark:arrayUtd_mark intoconnectionArr:connectionArr db:db];
refreshArchive.d=refreshDB.d;
[archiveTools saveRefresh:refreshArchive];
});
摘自:http://www.cocoachina.com/bbs/read.php?tid-1710923-page-2.html
网友评论