iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败
Posted
技术标签:
【中文标题】iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败【英文标题】:CLLocationManager on iPhone Simulator fails with kCLErrorDomain Code=0 【发布时间】:2011-03-07 20:16:59 【问题描述】:iPhone Simulator 上的CLLocationManager
应该是伪造 Cupertino(不是吗?),但事实并非如此,而是使用 kCLErrorDomain Code=0
失败。 LocationManager 的委托接收到消息didFailWithError
。此方法用于记录错误,控制台输出以下内容:
Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
当我遇到这个问题时,我正在做一个真正的项目,但讨论我的代码毫无意义,因为我从开发中心下载了“位置”示例代码(针对 ios 4 于 2010 年 6 月 22 日更新)和问题坚持。
该应用程序应该在收到第一次位置更新时启用“添加”按钮,以便用户可以跟踪他们的位置,但它什么也不做。
我在didFailWithError
的实现中添加了一行(微不足道的)来记录错误(如果有)。我收到上述错误。
使用 Xcode 3.2.2 和目标 3.1.3,在运行旧版本的“Locations”项目时,我可以获得一个固定的位置 (Cupertino)。
有人可以帮忙吗?
谢谢。
【问题讨论】:
自从升级到 sdk 4 后我遇到了完全相同的问题 您是否曾使用 XCode 4.2 beta 打开过您的项目? @Nicolae Surdu 我已经有一段时间没有发布这个问题了......事实上,当我最近升级到 XCode 4.2 和它附带的 iOS Simulator 5.0 时,它开始工作了。我在下面的答案中解释了我的经验。 我注意到有时模拟器会忘记您的位置偏好。我的建议:根据@shafkhan 的回答编辑运行方案并禁用(取消选中)位置模拟,然后在模拟器上运行您的应用程序。加载应用后,转到 debug > location 并选择 Apple 或 City Run 等移动路线之一。 【参考方案1】:如果您选中了方案/编辑方案/选项/允许位置模拟但没有设置默认位置,也会出现此错误。
请检查一下它可能会解决您的问题。
【讨论】:
这是为我做的。在我的项目中它被设置为无。 非常烦人的问题:(。谢谢! 在 Ionic / Cordova / PhoneGap 应用程序中收到此错误消息。在不知道与Scheme/Edit Scheme/Options/Allow Location Simulation
相关的任何内容的情况下,我的解决方法大致相同:在模拟器本身中,选择Debug > Location
下的位置。【参考方案2】:
以下步骤解决了我的问题:
在模拟器菜单下:
Reset Content and Settings...
。 关闭模拟器 重新启动您的应用。
【讨论】:
这对我有用!现在我选中了方案/编辑方案/选项/允许位置模拟,方案选项中的默认位置设置为无,但模拟器的调试菜单/位置中的位置设置为自定义位置。【参考方案3】:我遇到了同样的情况并遵循了这些步骤,可能会有所帮助:)
1) 转到模拟器(无论哪个版本)
2) 转到调试菜单 -> 位置 -> 选择 Apple 作为您的自定义 位置。
它开始在我的情况下工作..
【讨论】:
【参考方案4】:我听说过reported before
,但直到现在我自己才看到。自从我使用以太网以来,我的 MacBook 上的 Airport 已关闭。我打开机场并重新启动模拟器,现在它可以工作了。
您需要在 Mac 上启用 Wi-Fi(机场),模拟器才能使用 Xcode 3.2.3 报告位置。
【讨论】:
我的 Wi-Fi(机场)已启用,但我仍然遇到同样的问题。可能模拟器找不到我的 Wi-Fi,我需要在 Skyhook 注册我的 Wi-Fi 的位置吗? (见***.com/questions/2140340/…) 我不知道,模拟器甚至不使用WiFi,它总是报告库比蒂诺的固定位置。与其花费大量时间尝试修复它,不如使用其他解决方案:CLLocation simulator 用于模拟器。 好的,所以...“您需要在 Mac 上启用 Wi-Fi(机场),模拟器才能使用 Xcode 3.2.3 报告位置”但是...“模拟器没有即使使用 WiFi,它总是报告库比蒂诺的固定位置。”。哇哦。这是一个错误还是什么?无论如何,谢谢你,我会尝试你提到的其他解决方案。 让我知道这是否也适合您。有点难以置信,但我将其关闭了 3 次,每次都得到相同的结果。 这对我有用。在过去的几天里,我遇到了完全相同的问题。令人沮丧...我在 iMac 上并打开了 AirPort...walla 它的位置再次正确更新。【参考方案5】:如果您已选中 Scheme/Edit Scheme/Options/Allow Location Simulation
但未设置默认位置,也会出现此错误。
【讨论】:
好提示@Hemang,帮了我。更新我的方案后,我遇到了这个问题。在我的模拟器设置位置之前,但不知何故这消失了。我不得不重新输入“自定义位置”,它工作正常。【参考方案6】:它对我做了同样的事情:
一开始它显示了位置,然后我安装了 XCode 4.2 beta,然后当我回到 4.1 时,位置不再显示,CLLocationManager
抛出位置错误。
我执行了以下操作,问题得到了解决(我不知道这两个操作是否都需要,或者只有一个就足够了,因为现在它可以工作并且无法重现):
然后运行模拟器:
拔掉网线 将模拟器中的设备更改为 iPhone(视网膜):硬件 > 设备 > iPhone(视网膜)
我做错了,它修复了我的 iMac 上的位置。
【讨论】:
+1 感谢您的意见。我在下面的答案中解释了我的经验。【参考方案7】:CLLocationManager
在 iOS Simulator 5.0 上再次开始按预期工作。
根据我的经验,它曾经在 iOS Simulator 4.0 到 4.3 上一直以 kCLErrorDomain Code=0
失败。正如其他答案所建议的那样,打开机场并连接到 Wi-Fi 对我来说没有帮助。但是,我要感谢大家的回答。我只是通过测试设备上的所有核心位置代码来解决这个问题。
最近我升级到 XCode 4.2(从 XCode 3.2.6)和随附的 iOS Simulator 5.0,结果,我注意到 CLLocationManager
再次开始按预期工作。在 XCode 4.2 中选择较旧的模拟器时,它一直失败;这表明模拟器是罪魁祸首。
【讨论】:
XCode 4.2 自带的模拟器功能更强大。运行 iOS Simulator 时,选择“Debug”菜单,然后选择“Location”,您会看到许多位置模拟选项,包括 Bike Ride、Freeway Drive、Custom Location... @progrmr 感谢您的提示 :)【参考方案8】:需要开启机场,并且您必须加入网络。至少那是我的经验。当我刚刚打开它时,我一直收到同样的错误。加入我的无线网络,错误消失了。
【讨论】:
感谢您的回复,但当我收到错误消息时,我的机场已开启并且我已连接到网络(实际上我尝试了 3 个不同的网络)。【参考方案9】:在我打开我的机场并连接到 wifi 网络之前,我一直收到错误消息(不确定我是否应该在那个网络上!)......并且CLLocationManager
在多年来一直失败后仍然有效。这是一个巨大的模拟器错误还是什么??!
Apple - 请修复它! :P
【讨论】:
【参考方案10】:在 Xcode 7 模拟器中:
硬件 > 重启
(比“重置内容和设置”更柔和)
【讨论】:
对我不起作用。错误仍然偶尔出现。【参考方案11】:我通常通过以太网连接进行模拟器测试 - 我遇到了这个故障。打开 WIFI,但没有将其用于数据(没有连接到任何东西) - 现在一切正常。
所以,解决方案是 - 只需打开 WIFI(我也退出并重新启动了模拟器,不确定是否需要)。
Lion 和 Xcode 4.2
【讨论】:
【参考方案12】:在以下情况下,iOS 5.0.1 中仍然会出现这种情况:
在没有 Wi-Fi 连接的情况下运行模拟器 连接到无线网络 [Result] CLLocationManager 失败,并出现此问题中概述的错误。 [修复] 重启模拟器
【讨论】:
【参考方案13】:首先转到 Xcode 日志栏并设置“不模拟位置”。 然后选择模拟器菜单>调试>位置>设置自定义或选择任何。
【讨论】:
以上是关于iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败的主要内容,如果未能解决你的问题,请参考以下文章
iPad 模拟器上的 Xcode 5 iPhone 应用程序
iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败