我制作了一个iOS应用程序,它从BLE信标接收RSSI值,并通过wifi发送(使用GCDAsynSocket)到连接的MacBook。我在MacBook上的下一个应用程序接收RSSI值并以.txt格式保存(使用NSOutpuStream类)。 现在,我需要从八个不同的BLE信标发送RSSI值,并在键/值对中发送它们各自的MAC地址。 我尝试使用NSKeyedArchiver将NSDictionary编码为NSData。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: NSDictionaryContaningKeyValuePair];
在接收器端(MacBook),我使用NSUnarchiver进行解码。我无法提取包含键/值(MAC地址/ RSSI值)对的NSDictionary并将其存储到.txt文件中。此外,由于NSoutputStrteam写入方法采用非空的const uint8_t值,如何在.txt文件中写入键/值对? 我使用Objective-C和Xcode(7.0)。
谢谢。
答案 0 :(得分:0)
得到了解决方案。可以使用NSJSONSerialization类发送NSDictionary。在发射器端(iOS):
NSDictionary* dictInfo = [NSDictionary dictionaryWithObjectsAndKeys:self.txtInfo.text,@"data", nil];
NSData* dataDict = [NSJSONSerialization dataWithJSONObject:dictInfo options:NSJSONWritingPrettyPrinted error:nil];
[self.socket writeData:dataDict withTimeout:-1.0f tag:0];
在接收方端(MacBook):
if ([self getSelectedSocket]== sock) {
[_dataBuffer appendData:data];
if ([sock socketAvailableBytes] == 0) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_dataBuffer options:NSJSONReadingMutableLeaves error:nil];
DLog("Dictionary Info: %@", dict);
NSString* strInfo = (NSString*)[dict objectForKey:@"data"];
[_dataBuffer setLength:0];
self.txtLogs.stringValue= strInfo;
有关详细信息,请访问https://github.com/boobalaninfo/Bonjour-iOS-MAC-Apps。