我正在使用 Apple 示例代码 BTLE_TRANSFER https://developer.apple.com/library/ios/samplecode/BTLE_Transfer/Introduction/Intro.html 在示例中,iOS 设备“A”向另一台 iOS 设备“B”发送了一些B(中央)订阅“A”(外围)的特征时的“文本”(NSString)。(数据被切割成碎片然后逐块发送,直到另一边收到所有内容)
我修改了代码以使用 UIImageJPEGRepresentation 方法传输图像,它工作正常(但当图像大小超过 2 ko 时需要很长时间)
现在我想尝试传输一组不同的对象,如文本、图像。
我在 didSubscribeToCharacteristic 方法(外围管理器端)中尝试了以下代码:
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 时,它说数据是空的。
我使用了错误的方法吗?有没有其他方法可以将 nsarray 放入 nsdata 中?
谢谢您的帮助
吉米