2016-03-06 39 views
1

我使用Swift 2.2.1來構建一個用作藍牙外圍設備的iOS應用程序。使用Swift和CoreBluetooth創建一個靜態特性

我要宣傳一個人的名字爲靜態的特點,所以我創造這樣的特點:

// 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」, 原因:

「特性與緩存的值必須是隻讀」 10

關於我可能會做錯什麼的想法將不勝感激!

回答

0

您不能使用您自己創建的特徵的CBCharacteristicProperties.Broadcast屬性。從documentation

  • CBCharacteristicPropertyBroadcast特徵的值可以使用的特性配置描述符進行廣播。

    該屬性是不允許發佈通過 addService:CBPeripheralManager類的地方特性。這意味着 ,當您通過 initWithType:properties:value:permissions:方法 CBMutableCharacteristic類初始化新對象 CBMutableCharacteristic對象時,您不能使用此屬性。

+1

固定 - 謝謝!我在之前的版本中拉了它,並無意中重新引入了它 - 非常感謝您的幫助! –