关于CLLocation定位中CLGeocoder报错的问题

IOS_开发技巧_定位反地理编码的一些坑 在反地理编码中,我们直接拿到了CLPlacemark来获取地理信息,但是大家有没有发现有一个坑,在定位到北京的时候,这个信息却没有按照我们所想的方式去走了,原因如下,不说了,代码 // 反地理编码 [self.coder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray 阅读详情

由于公司SDK需要定位设备位置来做一些操作,所以就用了系统的CLLocation去做了简单的定位和经纬度反编译。但是在反编译的时候遇到一些问题,CLGeocoder报错。

话不多说,贴上代码

@interface TimeAndLocation ()<CLLocationManagerDelegate>
@property (nonatomic,strong)CLLocationManager *locationManager;
@property (nonatomic , strong)CLLocation *location;
@end

@implementation TimeAndLocation

+(TimeAndLocation *)getInstance{
    static TimeAndLocation *timeAndLocation = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        timeAndLocation = [[TimeAndLocation alloc]init];
        timeAndLocation.locationManager = [[CLLocationManager alloc]init];
        timeAndLocation.locationManager.delegate = timeAndLocation;
        timeAndLocation.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        timeAndLocation.locationManager.distanceFilter = kCLLocationAccuracyBestForNavigation;
        [timeAndLocation.locationManager requestAlwaysAuthorization];
        [timeAndLocation.locationManager requestWhenInUseAuthorization];
        [timeAndLocation.locationManager startUpdatingLocation];
    });
    return timeAndLocation;
}

#pragma mark - LocationDelegate
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
    CLLocation *location = [locations lastObject];
    NSLog(@"地理位置信息%@",location);
    CLLocationCoordinate2D coordinate = location.coordinate;
    NSLog(@"%f --- %f",coordinate.latitude,coordinate.longitude);
    CLGeocoder *clgeocoder = [[CLGeocoder alloc]init];
    [clgeocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (placemarks) {
            
        CLPlacemark *placemark = [placemarks firstObject];
            NSLog(@"%@",placemark);
          }
        [self.locationManager stopUpdatingLocation];
    }];
}
由于还需要其他逻辑,就简单封装了一个类,方便外部使用。

然后,运行就报错了

有人说是

[clgeocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (placemarks) {
            
        CLPlacemark *placemark = [placemarks firstObject];
            NSLog(@"%@",placemark);
          }
        [self.locationManager stopUpdatingLocation];
    }];
中的location的问题,

也有人说是 没有设置info.plist里面的权限(8.0之后需要经过用户同意),

还有人说把xcode中 Edit scheme 里面 run-Options-all location simulation 默认使用模拟器勾选去掉,重新运行模拟器reset content and settings,再勾选上,

然而我的代码里面都有,以上方法都尝试了都不行

【解决过程】

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.最后是从

didFailWithError: Error Domain=kCLErrorDomain Code=0 “The operation couldn’t be completed. (kCLErrorDomain error 0.)”

找到

Location Manager Error : (KCLErrorDomain error 0)

得知Apple的电脑中,有对应的无线(Wi-Fi)管理软件Airport。

而对应的上述的CLGeocoder去执行坐标转换为地理信息,是通过底层的CoreLocation实现的。

而CoreLocation是依赖于当前网络的。

而当前在Xcode中是使用iOS模拟器调试代码的。

所以,此处iOS模拟器,只是使用Ethernet链接网络的话,CoreLocation就无效了。

所以要去开启Airport。

3.结果,由于我的是黑苹果,所以里面没有无线网卡,导致:

系统偏好设置->网络:

preference network

里面没有Airport:

no wifi

所以也就无法开启Airport,无法使用Wifi。

也尝试了通过向导创建Wifi,未成功。

也去试了试搜索Airport,但是还是打开的上述页面。

4.去VirtualBox中看了看,结果也找不到有什么虚拟的无线网卡供选择的:

virtualbox no wireless card

所以,貌似现在无法解决此问题,无法开启VirtualBox中的Mac的Airport。

 

【总结】

真机运行OK的

CLGeocoder的reverseGeocodeLocation出现kCLErrorDomain的原因,在于用的是Xcode的iOS模拟器中,没有无线网络,导致CLGeocoder所依赖的底层的CoreLocation出错。

解决办法是:开启Mac的Airport即可。


YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | 在线蒸馏 (附代码 + 完整文件 + 解析教程) 这篇文章给大家带来的最新改进是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv11的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了,本文内容为在线蒸馏教程,之前的文章为离线蒸馏! 阅读详情

相关推荐

复数值神经网络可能是深度学习的未来

复数这种东西,在人的头脑中似乎抽象、似乎复杂,然而,对于计算机来说,一点也不抽象,不复杂,那么,将复数概念推广到神经网络会是什么结果呢?本篇介绍国外的一些同行的尝试实践,请我们注意观察他们的进展。

gongdiwudu的专栏 6565

iPhone开发基础教程笔记(十四)--第十四章 我在哪里?使用Core Location定位功能

第十四章 我在哪里?使用Core Location定位功能 Core Location可以利用三种技术来实现:GPS、蜂窝基站三角网定位(cell tower triangulation)和Wi-Fi定位服务(WPS)。GPS 是最精确的,但在第一代iPhone上不可用。蜂窝基站三角网定位在基本密度较高的区域非常精确。最后一个选项WPS使用iPhone的 Wi-Fi连接的IP

心核智慧科技 360度人脸识别开放算法 新零售系统定制 1094

PQFiber3.0.zip_ABAQUS混凝土_PQ-FIBER 3.0内容_pqfiber_钢筋 ABAQUS_钢筋子程序

用于abaqus子程序,混凝土材料和钢筋材料

iOS-使用CoreLocation定位

要使用Core Location首先我们要先了解CLLocationCLLocationManager、CLLocationManagerDelegate等相关概念。这些是构成我们获取设备定位,朝向,速度等数据的基本类。CLLocation  一个CLLocation对象里存储了由CLLocationManager对象产生的数据。其中的数据包括地理坐标(经纬度坐标)和海拔高度。

来自星星的の松子的博客 733

在程序中实现定位功能

Core Location是iOS SDK中一个提供设备位置的框架。可以使用三种技术来获取位置:GPS、蜂窝或WiFi。在这些技术中,GPS最为精准,如果有GPS硬件,Core Location将优先使用它。如果设备没有GPS硬件(如WiFi iPad)或使用GPS获取当前位置时失败,Core Location将退而求其次,选择使用蜂窝或WiFi。 Core Location的大多数功能是由位置...

weixin_30879169的博客 463

CLGeocoder Error Domain=kCLErrorDomain Code=2

使用CLGeocoder解码地址时,遇到错误 Error Domain=kCLErrorDomain Code=2 代码: #pragma mark 跟踪定位代理方法,每次位置发生变化即会执行(只要定位到相应位置) -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locat...

weixin_34112208的博客 583

iOS开发----百度地图定位KCLErrorDomain Code = 0的解决方法

最近使用百度地图的SDK,真机调的时候总是会出现问题,于是就在网上找答案,终于找到下面一篇很好的解释,我的原因也在此。 转载自:点击[百度地图] kCLErrorDomain Code=0终极解决方案!打开链接 1、在使用百度地图时,定位失败一般会报两种错: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be

RITL_Y 4598

iOS 反编码地址获取是否在国内以及手机模拟定位

iOS 反编码地址获取是否在国内以及手机模拟定位

Lydia的博客 2054

定位

实现功能:定位所在地的地址,及地址所在的区域地图 利用技术:iOS原生技术,两大框架:CoreLocation、MapKit    主要用到其中三个对象:CLLocationManager、CLGeocoder、MKMapView 实现图示: 操作提示:运行程序后,点击定位按钮,等待活动指示器消失,若定位成功,则出现所在地的详细地址,点击此地址栏,即进入所在的区域地图,若定位失败,地

LorneNote 306

iOS定位和位置信息获取

定位和反查位置信息要加载两个动态库 CoreLocation.f...

weixin_34270606的博客 83

【解决方法】Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed.

环境:XCODE6.0.1 + iPhone / iOS8 错误:使用CoreLocation获取地理位置信息,报错 Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 解决方法: 1.确定模拟器(手机)已经联网并且允许程序获取

Bottle's Blog 8万+

错误: Error Domain=kCLErrorDomain,The operation couldn’t be completed

在模拟器上调试发现获取位置坐标信息的时候会报错错误信息: didFailWithError: Error Domain=kCLErrorDomain Code=0 “The operation couldn’t be completed. (kCLErrorDomain error 0.)”。

DCSnail-蜗牛 1018

IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0)

前几天解决了在ios8上无法使用地址位置服务的问题,最近在模拟器上调试发现获取位置坐标信息的时候会报错错误信息: didFailWithError: Error Domain=kCLErrorDomain Code=0 “The operation couldn’t be completed. (kCLErrorDomain error 0.)”。 出错原因是xcode里面的project--

JJMM2009的专栏 2万+

iOS_解决模拟器 Error Domain=kCLErrorDomain Code=0

做地图开发的时候发现真机没问题,模拟器一直报 Error Domain=kCLErrorDomain Code=0 错误。 推理了一下:应该是模拟器默认定位问题(模拟器默认是没有定位的)。 根据以下路径打开设置:project-->scheme-->edit scheme-->options-->core location 发现:Allow Location Simulation 前面的勾是

云笔记 1102

CoreLocation无法定位问题解决方案

最近在使用CoreLocation方面的开发,需要获取一些定位信息,但是总是遇到各种问题。我下面来罗列一下这些问题,并总结一下各种解决方案。 。 。 。 问题的根源大概是网络请求问题。毕竟苹果的服务是国外的。下面我来提出一些解决方案。 【方案1】 在iOS9之后iOS的网络请求都使用了https,所以需要在plist文件中加入如下两个字段。 NSAppTran

乞力马扎罗的雪CYF的博客 3136

iOS 进行定位时出现The operation couldn’t be completed. (kCLErrorDomain error 1.)问题的解决方案

在使用swift语言进行ios开发定位功能时出现了一个问题, The operation couldn’t be completed. (kCLErrorDomain error 1.) 在网上查询了很久的解决方案,有的说是让重置模拟器或者清理项目,都没有效果,最终找到了解决方案。 解决方案 在info.plist文件中需要添加三项key值。因为网上的开发定位的博文,大部门都是让添加2项,问题就出在这里。为了兼容不同的机型,需要把三项都加上,才能弹出定位授权提示,否则就会出现上面的问题。 value值可

做GIS梦的人 4475

[ios] 定位报错Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain e...

Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 输出了这个erro 其实是模拟器故障,把模拟器退出了,然后重新run一下就好了 转载于:https://www.cnblogs.com/zoe-j/p/4033699.html...

weixin_30216561的博客 363

Error Domain=kCLErrorDomain Code=0 "(null)"

IOS百度定位错误:  Error Domain=kCLErrorDomain Code=0 "(null)" 解决: Product -> Scheme -> Edit Scheme -> Options -> Allow Location Simulation must be checked and try providing a default location, don

smilebigdear的专栏 1433

didFailWithError: Error Domain=kCLErrorDomain Code=0 “The operation couldn’t be completed. (kCLError

This error also occurs if you have Scheme/Edit Scheme/Options/Allow Location Simulation checked but don't have a default location set. Please check this it may resolve your issue.

SpeedBoy007的专栏 3647

Xcode,swift:Error Domain=kCLErrorDomain Code=1 "(null)"问题解决

问题描述: iOS开发时,当使用用户的位置权限时,获取用户经纬度报错:Error Domain=kCLErrorDomain Code=1 "(null)",错误域=kCLError域代码=1“(null)” 解决方法: 打开模拟机的设置-通用-语言与地区 将地区设置为中国(如果你的开发位置在中国的话) 点击左上方Features,选择Location为Custom Location. ...

LYly_B的博客 4885

iOS 定位时出现 kCLErrorDomain error 2错误

错误提示: kCLErrorDomain error 2 的解决方法

怀可的博客 3795
上一篇: http状态码
下一篇: WKWebView如何实现post请求
Crazy_bananas
博客等级 码龄10年 10粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值