在所有情况下都不会调用Swift BLE函数didConnectPeripheral

时间:2015-10-20 15:02:59

标签: ios swift bluetooth-lowenergy core-bluetooth

我编写了一个iOS应用程序,用于将一些数据从我的iPhone传输到蓝牙低功耗模块。直到前天,一切都运行良好......但似乎我昨天做了一个不好的改变,现在,我的应用程序不再工作了。 didConnectPeripheral func未被调用。将来我必须每天备份我的代码......无论如何,这是连接到我的设备的功能:

在类ScanTableView中:

var bluetoothManager: BluetoothManager = BluetoothManager()

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
    selectedPeripheralIndex = indexPath.row
    print(selectedPeripheralIndex!)
    bluetoothManager.CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
}

有什么遗漏?当我在connectPeripheral课程中使用BluetoothManager func时,我能够毫无问题地连接...但我希望能够选择合适的BLE设备,所以我有用户选择一行后连接。

在班级BluetoothManager中

var CBmanager: CBCentralManager = CBCentralManager()

func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)
{
    let UUID = "\(peripheral.identifier)".substringFromIndex("\(peripheral.identifier)".startIndex.advancedBy(31))

    if !peripheralArray.contains({$0.UUID == UUID})
    {
        if peripheral.name != nil
        {
            peripheralArray.append(BluetoothPeripheral(name: peripheral.name!, UUID: UUID, RSSI: RSSI, peripheral: peripheral))

            if peripheral.name!.containsString(DEVICE_NAME)
            {
                CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
            }
        }
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我解决了这个问题。这似乎是全局数组的一个问题 peripheralArray。如果我使用本地数组就可以了!