我有一个BLEPeripheral,它拥有大约30个CBCH特性。我正在构建一个与自定义BLE设备接口的应用程序。当视图加载时,我需要在该设备上编写,读取和订阅特征。我遇到的问题是我不确定我的所有特征何时被分配给数据模型,如果我尝试加载我的视图,那么我的应用程序将崩溃。我通过添加计数整数并在发现每个特征后递增计数来确认这一点,然后当我的计数int == 30时,我加载了UI。这种感觉非常笨重,我觉得这是一个更好的方法。
我通过观察者通知触发在UI视图上加载数据。为了提供更多信息,我正在使用splitview,用户选择想要连接的ble对象。一旦连接,它会隐藏splitview并显示详细视图。
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
for (CBCharacteristic *characteristic in service.characteristics) {
if(_itemCount == 30) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"STOPINDICATOR" object:self];
}
// Serial Number
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:SERIAL_NUMBER]]) {
_serialNumber = characteristic;
_itemCount++;
}
// MFG Name
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:MFG_NAME]]) {
_mfgName = characteristic;
_itemCount++;
}
// Device Type
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:DEVICE_TYPE]]) {
_deviceType = characteristic;
_itemCount++;
}
// Model Number
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:MODEL_NUMBER]]) {
_modelNumber = characteristic;
_itemCount++;
}
}
}