我发现startMonitoringForRegion
仅在iOS 8.4上崩溃,这给了我这个错误:
*** 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)
}
}
}
})
}
答案 0 :(得分:1)
错误是
setObjectForKey:object不能为nil(key:major)
这更可能是NSDictionary错误。正如它所说,你将对象设置为零。在viewcontroller
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="0dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="hr.app.liftme.liftmehr.Vjezbe"
tools:showIn="@layout/activity_vjezbe">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="Vježbe"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<include
android:layout_height="wrap_content"
android:layout_width="match_parent"
layout="@layout/toolbar_layout"
>
</include>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
app:tabMode="scrollable"
app:tabGravity="fill"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewPager"
android:background="#ffffff">
</android.support.v4.view.ViewPager>
</android.support.design.widget.AppBarLayout>
</LinearLayout>
密钥对象中的一次检查是否为零
答案 1 :(得分:0)
这更可能是NSDictionary错误。正如它所说,你将对象设置为nil。
您可以通过添加“异常”断点来找到它的实际原因。它将自动停止您的应用程序并指向您收到此错误的代码位置。为了获得更多帮助,我附上了显示如何添加异常断点的图像。
1)转到项目导航器的断点部分。
2)然后点击左下角的“+”图标,选择添加例外断点。
3)添加断点后,重新运行代码,您将找到导致问题的位置。
希望这有帮助。
答案 2 :(得分:0)
经过多天的搜索,我发现我的第三方框架搞乱了。该框架是taplytics的推文,推送通知服务。
谢谢你们的帮助。