2017-03-23 71 views
0

我已經制作了一個iOS應用程序,它接收來自BLE信號燈的RSSI值並通過wifi發送(使用GCDAsynSocket)到連接的MacBook。我在MacBook上的下一個應用程序接收RSSI值並以.txt格式保存(使用NSOutpuStream類)。 現在,我需要發送來自八個不同BLE信標的RSSI值及其在鍵/值對中的相應MAC地址。 我試圖用NSKeyedArchiver將NSDictionary編碼到NSData中來解決它。通過WiFi發送和接收使用gcdasyncsocket的鍵/值對

NSData *data = [NSKeyedArchiver archivedDataWithRootObject: NSDictionaryContaningKeyValuePair]; 

而在接收端(MacBook),我用NSUnarchiver解碼。我無法提取包含鍵/值(MAC地址/ RSSI值)對的NSDictionary,並將其存儲到.txt文件中。此外,由於NSoutputStrteam寫入方法採用nonnull常量uint8_t值,因此如何在.txt文件中寫入鍵/值對? 我使用Objective-C和Xcode(7.0)。

謝謝。

回答

0

得到了解決方案。 NSDictionary可以使用NSJSONSerialization類發送。在發射機端(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

相關問題