解析一个包含多个地址的数组时循环顺序异常。
ios开发新手,求教。。
尝试使用CLGeocoder解析一个addressArray并依次添加到一个MapItemArray中,代码如下:
假设地址数组中只有一个地址“上海”,我预想的输出顺序应该是:
1.“需要解析的地址为上海”
2.有1个Item被添加
3.一共有1个item
但实际是:
这是为什么?
尝试使用CLGeocoder解析一个addressArray并依次添加到一个MapItemArray中,代码如下:
[self getAddress];//一个将地址添加到数组的方法
int m=0;
while (m<self.addressArray.count){
NSString *address=self.addressArray[m];
NSLog(@"需要解析的地址为%@",address);
CLGeocoder *geocoder=[[CLGeocoder alloc]init];
[geocoder geocodeAddressString:address completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
if(error||placemarks.count==0){
NSLog(@"解析失败");
}else{
CLPlacemark *place=[placemarks lastObject];
MKPlacemark *mp=[[MKPlacemark alloc]initWithPlacemark:place];
MKMapItem *mapItem=[[MKMapItem alloc]initWithPlacemark:mp];
[self.mkItemArray addObject:mapItem];
NSLog(@"有%lu个Item被添加",(unsigned long)self.mkItemArray.count);
}
}];
m+=1;
}
NSLog(@"一共有%lu个Item",(unsigned long)self.mkItemArray.count);
[code=objc]假设地址数组中只有一个地址“上海”,我预想的输出顺序应该是:
1.“需要解析的地址为上海”
2.有1个Item被添加
3.一共有1个item
但实际是:
2017-12-01 11:53:21.955961+0800 Navigation[2565:331460] 需要解析的地址为上海
2017-12-01 11:53:21.957057+0800 Navigation[2565:331460] 一共有0个Item
2017-12-01 11:53:22.359883+0800 Navigation[2565:331460] 有1个Item被添加这是为什么?
...全文
相关推荐
详解vue中多个有顺序要求的异步操作处理
主要介绍了vue中多个有顺序要求的异步操作处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C语言实现队列源码,包含顺序队列,链式队列,循环队列,亲测可用
队列源码,文章《也没想象中那么神秘的数据结构-先来后到的“队列”》系列示例代码
JS多个异步请求 按顺序执行next实现解析
主要介绍了js多个异步请求 按顺序执行next实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java队列实现(顺序队列、链式队列、循环队列)
java队列实现(顺序队列、链式队列、循环队列)
详解负载均衡实现一个域名对应多个IP地址
主要介绍了详解负载均衡实现一个域名对应多个IP地址的相关资料,需要的朋友可以参考下


