2017-03-23 4 views
0

私はBLEビーコンからRSSI値を受信し、Wi-Fi経由で(GCDAsynSocketを使用して)接続されたMacBookに送信するiOSアプリケーションを作成しました。 MacBookの次のアプリケーションはRSSI値を受け取り、NSOutpuStreamクラスを使用して.txt形式で保存します。 これで、8つの異なるBLEビーコンのRSSI値とそれぞれのMACアドレスをキーと値のペアで送信する必要があります。 NSKeyedArchiverを使ってNSDictionaryをNSDataにエンコードして解決しようとしました。wifiでgcdasyncsocketを使用してキーと値のペアを送受信する

NSData *data = [NSKeyedArchiver archivedDataWithRootObject: NSDictionaryContaningKeyValuePair]; 

受信者側(MacBook)で、NSUnarchiverを使用してデコードしました。キー/値(MACアドレス/ RSSI値)のペアを含むNSDictionaryを抽出して.txtファイルに保存できません。さらに、NSoutputStrteam書き込みメソッドはnull以外のconst uint8_t値をとるため、キー/値のペアを.txtファイルに書き込むにはどうすればよいですか? Objective-CとXcode(7.0)を使用します。

ありがとうございます。

答えて

0

溶液を得る。 NSDictionaryは、NSJSONSerializationクラスを使用して送信できます。詳細については

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をご覧ください:受信者の最後(のMacBook)で

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]; 

:トランスミッタの終わり(iOS版)で。

関連する問題