我发现只有iOS 8.4上的startMonitoringForRegion崩溃了,这给了我这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: major)'
*** First throw call stack:
(0x2af4a49f 0x38744c8b 0x2ae67c63 0x3c3bbd 0x380d6b 0x17fcd8 0x19f170 0xebe9db 0xebe9c7 0xec23ed 0x2af103b1 0x2af0eab1 0x2ae5c3c1 0x2ae5c1d3 0x3225a0a9 0x2e46a7b1 0x2ad734 0x38cc4aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException我们认为CLBeaconRegion的主要值可以为零。所以我不知道是怎么回事。
代码如下:
if let context = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext{
var dataFetch = DataFetcher()
dataFetch.fetchBeacons(context, completion: { (success) -> Void in
dispatch_async(dispatch_get_main_queue()) {
var beacons = Beacon.getAllBeacons(context)
if let uuid = beacons.first?.uuid {
var region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: uuid), identifier: "iBeacon")
region.notifyOnEntry = true
region.notifyOnExit = true
if self.isBluetoothOn {
self.manager.startMonitoringForRegion(region)
}
}
}
})
}发布于 2016-02-15 17:17:33
错误是
setObjectForKey:对象不能为空(key: major)
这更有可能是NSDictionary错误。正如它所说的,您正在将一个对象设置为nil。在viewcontroller中检查一次major密钥对象为空或不在任何位置
发布于 2016-02-15 20:43:35
这更有可能是NSDictionary错误。正如它所说的,您正在将一个对象设置为nil。
你可以通过添加“异常”断点来找出真正的原因。它将自动停止您的应用程序,并指向您收到此错误的代码位置。为了获得更多帮助,我附上了显示如何添加异常断点的图像。
1)进入项目导航器的断点部分。

2)然后点击左下角的'+‘图标,选择add exception breakpoint。

3)添加断点后,重新运行你的代码,你会发现哪里出了问题。

希望这能有所帮助。
发布于 2016-02-22 14:32:15
经过几天的搜索,我发现我有一个第三方框架来处理这个问题。这个框架是taplytics的sdk,一个推送通知服务。
谢谢你们的帮助。
https://stackoverflow.com/questions/35404773
复制相似问题