BTLE Corebluetooth iOS Передача массива

Я играю с образцом кода Apple BTLE_TRANSFER https://developer.apple.com/library/ios/samplecode/BTLE_Transfer/Introduction/Intro.html В этом примере устройство iOS "A" отправляет на другое устройство iOS "B" некоторые "текст" (NSString), когда B (центральный) подписывается на характеристику "A" (периферийный). (Данные разрезаются на части, а затем отправляются по частям, пока все не будет получено на другой стороне)

Я изменил код для передачи изображения, используя метод UIImageJPEGRepresentation, и он работает нормально (но занимает много времени, когда размер изображения превышает 2 ko)

Теперь я хотел бы попытаться передать массив различных объектов, таких как текст, изображение.

Я попробовал приведенный ниже код в методе didSubscribeToCharacteristic (со стороны Peripheral Manager):

NSArray *MyArray;
MyArray = [[NSArray alloc]initWithObjects:@"Text1", @"Text2", nil];
_dataToSend = [NSKeyedArchiver archivedDataWithRootObject:MyArray];

где _dataToSend - это NSData, который отправляется

И приведенный ниже код в методе didUpdateValueForCharacteristic (центральная сторона - периферийный делегат):

NSArray *My2Array = [NSKeyedUnarchiver unarchiveObjectWithData:_dataReceived];
NSLog(@"%@",[My2Array objectAtIndex:1]);

где _dataReceived - полученная NSData

Каждый фрагмент получен на центральной стороне, но некоторые части имеют нулевое значение, и когда я пытаюсь разархивировать данные в nsarray, он говорит, что данные имеют значение NULL.

Я использую неправильный метод? Есть ли другой способ поместить nsarray в nsdata?

Спасибо за помощь

Джимми

1 ответ

Код на самом деле работает... Я просто перепечатал все с нуля Извините за беспокойство

Другие вопросы по тегам