我正在制作一款使用iBeacon的应用。当检测到iBeacon时(在AppDelegate内),应用程序会检测到手机的坐标并将其转发给API。
我在ViewController中设置了一个名为runGPS()的函数,它执行上述操作并尝试在检测到iBeacon时执行它。
当我执行ViewController()。runGPS()时,我收到一条错误:'编码器'在电话中
我已经查找了这个问题,并继续围绕解决问题。一次校正会导致另一个错误等等。
如何纠正这一点,或者是我对此错误的整体策略?
func locationManager(manager: CLLocationManager,
didEnterRegion region: CLRegion) {
manager.startRangingBeaconsInRegion(region as! CLBeaconRegion)
manager.startUpdatingLocation()
NSLog("You entered the region")
ViewController(NSCoder)!.runGPS()
}
答案 0 :(得分:2)
我还在我的应用程序中实现了iBeacon。您必须在该viewcontroller中添加此位置管理器委托,并将委托设置为
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
你可以检查viewController,如果有任何用户进入你的beacon区域,那么这个委托方法将会运行
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
}
您可以在参数中收到的 beacons 数组中检查您的信标。
答案 1 :(得分:1)
如果runGPS()
类的代码不在那里,你应该将其分开。它是否使用ViewController的任何功能?如果没有,那么你应该将它移动到一个单独的类,用于将数据传递给API。如果你不能这样做那么你可以将runGPS声明为一个静态方法并调用ViewController
,前提是你没有使用ViewController.runGPS()
方法中ViewController
的任何属性