我正在使用 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
类。