Пользовательский класс типа NSData пропускает -байт - PullRequest
0 голосов
/ 01 ноября 2018

В настоящее время я работаю над приложением для iOS (написанным на Swift), которое должно соединить два (позже больше) устройства iOS и передавать данные между ними с помощью Bluetooth. Фактическое использование должно быть распространение музыки / аудио, но сейчас у меня достаточно проблем с отправкой простого текстового сообщения.

Я использую Core Bluetooth Framework (Bluetooth 4.0 Low Energy) для настройки как периферийных, так и центральных ролей и (после успешного установления соединения) я использую эту периферийную функцию для хранения моих данных в соответствующей характеристике, которая может быть прочитана центральным :

func updateValue(Data, for: CBMutableCharacteristic, onSubscribedCentrals: [CBCentral]?) -> Bool

Я хочу передать данные в пользовательском типе данных "ChatMessage" , который содержит одну переменную String для хранения текста сообщения и одну String для хранения имени отправляющего устройства. Класс является производным от типа NSData , поэтому я также реализовал необходимые функции инициализации / кодирования / декодирования.

Я думал, что нет проблем с преобразованием моего NSData класса в тип Data , как требуется для вышеупомянутой функции. Но во время выполнения я получаю эту ошибку:

'NSInvalidArgumentException', reason: '*** -bytes only defined for abstract class.  Define -[MusicSync.ChatMessage bytes]!'

Есть ли переменная (getter? -) или функция, которую я также должен реализовать в своем собственном классе? Если да, то как именно это должно выглядеть? Я довольно новичок в разработке для iOS, поэтому я понятия не имею, для чего используются байты класса.

Заранее спасибо!

Я использую XCode версии 10.0, Swift 4 и для тестирования iPhone XS Max с iOS 12.0.1, а также iPad Air 2 с iOS 12.0.

...