在iPad上检测某些设备时CoreBluetooth崩溃

时间:2015-09-20 14:37:22

标签: ios

我一直在使用Xcode和Swift构建应用程序。该应用使用CoreBluetooth与蓝牙低功耗设备连接。

该应用会扫描设备并将其列在tableView中。如果找到的设备与正确的服务ID匹配,则会将其添加到设备阵列,因此会添加到tableView,但是,我已经编写了应用程序,以便在检测到设备时没有广告数据中的正确服务ID,它不会添加到tableView。因此,这意味着像这样的设备不是我想要连接的设备。

我一直在iPhone 6上测试应用程序,它会检测到正确的设备并将其添加到阵列tableView,并且不会添加任何其他错误设备的设备。

但是,我似乎在iPad 3上遇到了应用程序问题。运行应用程序时,它会检测到正确的设备并将其添加到阵列tableView。但是,当它检测到没有可用服务ID的设备时,它会崩溃,而不是不将其添加到列表中。

我使用的代码如下:

func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
    if discoveredDeviceArray.contains(peripheral.name!) {
        print("INFORMATION: Detected device \(peripheral.name!) but it already exists in the list. Skipping for now...")
    } else {
        if peripheral.name != nil { //Check to ensure that a nil device hasn't been detected - this otherwise will cause the app to crash.
                if advertisementData.description.contains("FFB0"){
                    print("INFORMATION: Discovered \(peripheral.name!) and it was added to the list of detected test devices.")
                    discoveredDeviceArray.append(peripheral.name!)
                    discoveredDeviceArrayInfo.append(peripheral)
                    self.bluetoothTableView.reloadData()
                } else {
                    print("WARNING: The device \(peripheral.name!) was discovered but not added to the list since it is not a test device.")
                }
        }
    }
}

目前,当iPad检测到Macbook的蓝牙信号时,它会在iPad上崩溃。 iPhone检测到这一点很好,并且没有将其添加到列表中。

该应用程序在该行崩溃

self.bluetoothTableView.reloadData()

错误:

Thread 1: EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)

我认为这与centralManager参数之一的advertisementData参数不打开选项有关,但它让我感到惊讶,因为它似乎只发生在iPad上。

这里是否有任何代码可以看出显然是错误的,需要纠正?

提前致谢!

0 个答案:

没有答案