使用 Swift 和 CoreBluetooth 创建静态特性



我正在使用 Swift 2.2.1 构建一个用作蓝牙外围设备的 iOS 应用程序。

我想宣传一个人的名字作为静态特征,所以我创建了这样的特征:

    // Build the NAME characteristic
if (identity.name != nil) {
    nameCharacteristic =
        CBMutableCharacteristic(type: performerNameCharacteristicUUID,
            properties: ([CBCharacteristicProperties.Read, CBCharacteristicProperties.Broadcast]),
            value: myIdentity?.name?.dataUsingEncoding(NSUTF8StringEncoding,
                allowLossyConversion: false),
            permissions: CBAttributePermissions.Readable)
    characteristicsArray.append(nameCharacteristic!)
}

当程序运行时,调用addServices并弹出此异常:

由于

未捕获的异常"NSInternalInconsistencyException"而终止应用程序,原因:"具有缓存值的特征必须是只读的"

关于我可能做错了什么的想法将不胜感激!

不能

CBCharacteristicProperties.Broadcast 属性与自己创建的特征一起使用。 从文档中:

  • CBCharacteristicPropertyBroadcast 特征的值可以使用特征配置描述符进行广播。

    此属性不允许用于通过以下方式发布的本地特征 CBPeripheralManager类的addService:方法。这意味着 初始化新的 CBMutableCharacteristic通过 initWithType:properties:value:permissions:方法 CBMutableCharacteristic类。

最新更新