我正在使用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'而终止应用, 原因:'具有缓存值的特征必须是只读'
对于我可能做错了什么的想法将非常感激!
答案 0 :(得分:0)
您不能将CBCharacteristicProperties.Broadcast
属性与您自己创建的特征一起使用。来自documentation:
CBCharacteristicPropertyBroadcast 可以使用特征配置描述符广播特征值。
此属性不允许通过发布的本地特征
addService:
类的CBPeripheralManager
方法。这意味着 初始化新的时不能使用此属性CBMutableCharacteristic
对象通过initWithType:properties:value:permissions:
方法CBMutableCharacteristic
课程。