Ошибка «Назначение только для чтения» при настройке служб и характеристик Core Bluetooth Peripheral Manager - PullRequest
0 голосов
/ 07 июня 2018

Я следую руководству по программированию Apple Core Bluetooth, пытаясь настроить периферийный менеджер, который будет публиковать определенные данные.Я написал следующий код на основе руководства по адресу https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/PerformingCommonPeripheralRoleTasks/PerformingCommonPeripheralRoleTasks.html#//apple_ref/doc/uid/TP40013257-CH4-SW1

 _peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil options:nil];
CBUUID *myConnectUUID = [CBUUID UUIDWithString:@"277860A8-9941-465B-9E75-F77F935299E7"];
CBUUID *advertiseUUID = [CBUUID UUIDWithString:@"C223B374-18FF-4D0B-8B46-B7CEC9C85077"];

_myCharacteristic =
[[CBMutableCharacteristic alloc] initWithType:advertiseUUID
                                   properties:CBCharacteristicPropertyRead
                                        value:nil permissions:CBAttributePermissionsReadable];

_myService = [[CBMutableService alloc] initWithType:myConnectUUID primary:YES];
_myService.characteristics = @[_myCharacteristic];
[_peripheralManager addService:_myService];

Однако в строке

_myService.characteristics = @[_myCharacteristic];

я получаю сообщение об ошибке Xcode, в котором говорится "назначение для чтения-только собственность. "Я не уверен, в чем проблема, так как я непосредственно следовал инструкциям и правильно инициализирую услугу / характеристику.У кого-нибудь есть совет?

Объявление _myservice в файле .h:

@property (strong, nonatomic) CBService *myService;

1 Ответ

0 голосов
/ 07 июня 2018

Проблема заключается в следующей строке:

@property (strong, nonatomic) CBService *myService;

Вы объявили _myService как CBService, поэтому он не является изменяемым, насколько известно компилятору.Таким образом, для _myService, characteristics не присваивается.

Вы должны были написать

CBMutableService* service = [[CBMutableService alloc] initWithType:myConnectUUID primary:YES];
service.characteristics = @[_myCharacteristic];
_myService = service;
...