【问题】
在iOS中,使用代码:
#pragma mark - #pragma mark CLLocationManagerDelegate -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ //NSString *locationDesciption = [[NSString alloc] initWithString:newLocation.description]; self.locationInput.text = [[NSString alloc] initWithString:newLocation.description]; CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error){ CLPlacemark *placemark = [placemarks objectAtIndex:0]; //self.locationInput.text =placemark.subLocality; self.locationInput.text =placemark.ISOcountryCode; }];
去通过CLGeocoder的reverseGeocodeLocation获得坐标newLocation所对应的可读的地理位置文本描述信息。
但是出错,错误见图:
错误的文字信息为:
error NSError * 0x06d07c00 NSObject NSObject _reserved void * 0x00000000 _code NSInteger 8 _domain __NSCFConstantString * 0x0015253c
【解决过程】
1.关于错误kCLErrorDomain,也找到了官网的解释:
kCLErrorDomain
The domain for Core Location errors.
extern NSString *const kCLErrorDomain;Constants
kCLErrorDomain
The domain for Core Location errors. This value is used in the
NSError
class.Available in iOS 2.0 and later.
Declared in
CLErrorDomain.h
.
但是很明显,没有具体解释原因,所以没法帮助解决问题。
2.最后是从
找到
Location Manager Error : (KCLErrorDomain error 0)
得知Apple的电脑中,有对应的无线(Wi-Fi)管理软件Airport。
而对应的上述的CLGeocoder去执行坐标转换为地理信息,是通过底层的CoreLocation实现的。
而CoreLocation是依赖于当前网络的。
而当前在Xcode中是使用iOS模拟器调试代码的。
所以,此处iOS模拟器,只是使用Ethernet链接网络的话,CoreLocation就无效了。
所以要去开启Airport。
3.结果,由于我的Mac是在VirtualBox中安装的,所以里面没有无线网卡,导致:
系统偏好设置->网络:
里面没有Airport:
所以也就无法开启Airport,无法使用Wifi。
也尝试了通过向导创建Wifi,未成功。
也去试了试搜索Airport,但是还是打开的上述页面。
4.去VirtualBox中看了看,结果也找不到有什么虚拟的无线网卡供选择的:
所以,貌似现在无法解决此问题,无法开启VirtualBox中的Mac的Airport。
【总结】
CLGeocoder的reverseGeocodeLocation出现kCLErrorDomain的原因,在于用的是Xcode的iOS模拟器中,没有无线网络,导致CLGeocoder所依赖的底层的CoreLocation出错。
解决办法是:开启Mac的Airport即可。
但是,我此处由于Mac是VirtualBox中的虚拟的Mac,而主机Win7中没有无线网卡,同时VirtualBox也没有对应的虚拟的无线网卡,所以没法使用VirtualBox中的Mac的Airport了。
不知道以后如果可能的话,Win7主机中有无线网卡的时候,VirtualBox中是否会出现对应的虚拟无线网卡供选择,以及Virtualbox中的Mac是否可以使用Airport。
转载请注明:在路上 » 【未解决】VirtualBox中的Mac中的Xcode的iOS/iPhone 模拟器中,使用CLGeocoder的reverseGeocodeLocation但返回的placemarks却是nil,还出现错误kCLErrorDomain error 8