在使用圆形区域

时间:2018-01-17 05:56:17

标签: 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

由于

1 个答案:

答案 0 :(得分:0)

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

目标-C

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

夫特

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

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