ios - 应用圆形区域的地理围栏时应用程序崩溃

标签 ios swift core-location geofencing

我正在创建一个通过信标跟踪用户的应用程序,当应用程序处于终止状态时,我正在使用地理围栏来跟踪用户的圆形区域。

我正在创建一个圆形区域,并且进入、退出代表是否正确运行。但在该应用程序崩溃之后。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CLCircularRegion major]: unrecognized selector sent to instance 0x608000010470'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010e29bb0b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010dcbb141 objc_exception_throw + 48
    2   CoreFoundation                      0x000000010e30b134 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x000000010e222840 ___forwarding___ + 1024
    4   CoreFoundation                      0x000000010e2223b8 _CF_forwarding_prep_0 + 120
    5   ShowAllBeaconList                   0x000000010d38ae90 -[MinewBeaconManager locationManager:didExitRegion:] + 128
    6   CoreLocation                        0x000000010e6a74e9 CLClientGetCapabilities + 38273
    7   CoreLocation                        0x000000010e699b55 CLClientInvalidate + 1051
    8   CoreFoundation                      0x000000010e241b5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    9   CoreFoundation                      0x000000010e226e54 __CFRunLoopDoBlocks + 356
    10  CoreFoundation                      0x000000010e226a23 __CFRunLoopRun + 1971
    11  CoreFoundation                      0x000000010e226016 CFRunLoopRunSpecific + 406
    12  GraphicsServices                    0x0000000115f69a24 GSEventRunModal + 62
    13  UIKit                               0x000000010e7ee0d4 UIApplicationMain + 159
    14  ShowAllBeaconList                   0x000000010d37ccd7 main + 55
    15  libdyld.dylib                       0x0000000111b0965d start + 1
    16  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

谢谢

最佳答案

当您响应 -didEnterRegion 和 -didExitRegion 时,您需要确保传入的 CLRegion 是一个特定的类。

objective-c

if ([region isKindOfClass:[CLCircularRegion class]]) {
    // Geofence
}
if ([region isKindOfClass:[CLBeaconRegion class]]) {
    // Beacon
}

swift

if region is CLCircularRegion {
    // Geofence
}
if region is CLBeaconRegion {
    // Beacon
}

您将希望避免访问特定类上不可用的任何属性。如果您希望编译器帮助您,可以将其强制转换为特定对象。

关于ios - 应用圆形区域的地理围栏时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294437/

相关文章:

没有 WiFi 或 GPS 的 iOS 位置?

ios - 测试 SwiftUI 正文 View 和属性

ios - 旋转呈现为 UIModalPresentationOverCurrentContext 的 VC

ios - Azure 通知,注册设备服务器端。适用于 FCM 但不适用于 APNS 的通知

ios - 如何多投一个正在进行的 Action 的结果或开始一个新 Action

ios - 如何在 MKMap 中获取邮政编码。 ( swift 3.0)

ios - Bool 值在 Swift 中不起作用

ios - 如何根据条件语句转至 View Controller ?

ios - 使用 CLLocation 计算两个坐标之间的距离在两部手机上不同吗?

ios - fetchBachSize 是真的有必要还是有缺陷被替代呢?