快速枚举......我怎么知道什么时候结束?完成块?

时间:2017-03-31 05:20:34

标签: objective-c core-bluetooth

我有一个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++;

        }
}

}

0 个答案:

没有答案