我需要从2个坐标(我正在使用GMSGeoCoder
-reverseGeocodeCoordinate: completionHandler:
方法)获取城市名称,然后对这些对象进行篡改。
问题是该方法在后台线程(不在主线程中)上运行,当我尝试比较(使用if
语句)对象(userCity
和{{1}时} - 两个storeCity
)仍然是零。
我的代码:
NSString
有什么想法吗?谢谢!
答案 0 :(得分:1)
重构代码以在完成异步任务后继续:
这样做的好处是你不会主动等待东西并阻止主线程
- (void)checkCitiesWithCompletionBlock:(void (^)(BOOL same))
//Checking user's city
[[GMSGeocoder geocoder]reverseGeocodeCoordinate:self.locationManager.location.coordinate completionHandler:^(GMSReverseGeocodeResponse *response, NSError *error) {
if (error) {
NSLog(@"%@",[error description]);
}
id userCity=[[[response results] firstObject] locality];
//Checking store's city
[[GMSGeocoder geocoder]reverseGeocodeCoordinate:arounder.radiusCircularRegion.center completionHandler:^(GMSReverseGeocodeResponse *response, NSError *error) {
if (error) {
NSLog(@"%@",[error description]);
}
id arounderCity=[[[response results] firstObject] locality];
same ([userCity isEqualToString:arounderCity]);
}];
}];
}