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】:

CLLocationManageriOS Simulator 5.0 上再次开始按预期工作。

根据我的经验,它曾经在 iOS Simulator 4.04.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 4 和模拟器上的 Facebook 登录失败

保存文件在 iPhone 和模拟器上的行为不同

iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败

如何在 OS X 上的 iPhone 4 模拟器中测试我的应用程序?

关闭 iPhone 模拟器上的键盘