Как правило, CBDescriptor
имеет свойство uuid
, которое будет одним из значений, указанных в документации и свойством value
.Тип свойства value
будет зависеть от uuid
.Вы можете найти соответствующий тип value
в каждом из возможных uuids CBDescriptor.Например, для CBUUIDCharacteristicFormatString
value
- это экземпляр Data
, который кодирует строку формата.
Пример функции, которая декодирует CBDescriptor
, показан ниже.Вам необходимо добавить отсутствующие типы uuid.
func descriptorDescription(for descriptor: CBDescriptor) -> String {
var description: String?
var value: String?
switch descriptor.uuid.uuidString {
case CBUUIDCharacteristicFormatString:
if let data = descriptor.value as? Data {
description = "Characteristic format: "
value = data.description
}
case CBUUIDCharacteristicUserDescriptionString:
if let val = descriptor.value as? String {
description = "User description: "
value = val
}
case CBUUIDCharacteristicExtendedPropertiesString:
if let val = descriptor.value as? NSNumber {
description = "Extended Properties: "
value = val.description
}
case CBUUIDClientCharacteristicConfigurationString:
if let val = descriptor.value as? NSNumber {
description = "Client characteristic configuration: "
value = val.description
}
case CBUUIDServerCharacteristicConfigurationString:
if let val = descriptor.value as? NSNumber {
description = "Server characteristic configuration: "
value = val.description
}
case CBUUIDCharacteristicAggregateFormatString:
if let val = descriptor.value as? String {
description = "Characteristic aggregate format: "
value = val
}
default:
break
}
if let desc=description, let val = value {
return "\(desc)\(val)"
} else {
return "Unknown descriptor"
}
}
Для конкретного декодирования данных, связанных с CBUUIDCharacteristicFormatString
, необходимо обратиться к документации Bluetooth