Экземпляры CBCharacteristic
могут быть получены только через процесс обнаружения службы.
В вашем Swift 1.2 кода вы Назначив «пустой» CBCharacteristic
просто чтобы удовлетворить компилятор о неиницализированных переменных, но вы должны были бы вводным вопрос времени был вы пытались использовать bob
перед назначением «реальные» CBCharacteristic
.
Swift предназначен для упрощения создания «безопасного» кода, который не имеет тонких проблем во время выполнения из-за неправильного использования типов. Нет смысла создавать экземпляр CBCharacteristic
напрямую, а в Swift 2.0 вам не рекомендуется делать это.
Если ваш CBCharacteristic
это свойство, то он должен быть объявлен как дополнительный, так как он не может иметь значение, пока характеристика не обнаружена
var bob:CBCharacteristic?
или, если вы уверены, что ваш код не будет пытаться доступ bob
перед их установкой -
var bob:CBCharacteristic!
Первым будет гарантировать, что вы пишете код разворачивать опциональный, прежде чем использовать его, а второй будет давать ошибку времени выполнения, если вы используете его, прежде чем он установлен - как из них предпочтительнее потенциально трудно отлаживать проблему, которую вы бы просто указали на «пустой» CBCharacteristic
Какова цель этой переменной в вашем коде? Переключение на 'CBMutableCharacteristic' решит вашу проблему? – hennes
@hennes Я устанавливаю переменную, как только я обнаруживаю устройство, к которому я хочу подключиться, чтобы я мог читать данные из него. Кроме того, 'CBMutableCharacteristic' не инициализируется в swift 2. – user3042719
Похоже, CBMutableCharacteristic имеет 'init (тип UUID: CBUUID ?, свойства: CBCharacteristicProperties, значение: NSData ?, разрешения: CBAttributePermissions)'? – nielsbot