2015-08-16 14 views
1

Я хочу, чтобы иметь возможность использоватьКак отправить несколько наборов данных по каналу связи multipeer

appDelegate.mpcHandler.session.sendData 

однако на приемном конце концов, нет никакого способа получать те же переменные, например, для получения какой-либо бит данных насколько я знаю, вы должны написать что-то вроде этого

func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) { 
    NSLog("%@", "didReceiveData: \(data.length) bytes") 
    let str = NSString(data: data, encoding: NSUTF8StringEncoding) as! String 
} 

ли кто-нибудь еще знает какой-либо образом в связи multipeer отправлять и принимать более одного набора данных, как я хочу, чтобы иметь возможность постоянно быть транслируя длительность песни, но в начале песни мне нужно отправить название песни.

ответ

0

Вы можете отправить словарь, преобразовав его в NSData следующим образом:

 let data = NSKeyedArchiver.archivedDataWithRootObject(dictionary) 

На приемной стороне это будет выглядеть примерно так:

override func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) { 
    let dictionary = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! Dictionary<String, AnyObject> 
    NSLog("Peer \(peerID) has sent message \(dictionary)") 
    ..... 
} 

Это позволит вам отправить начальный данные. Затем вы должны использовать

- startStreamWithName:toPeer:error: 

Чтобы начать отправку потока. Это создает связанный поток байтов (NSOutputStream), который можно использовать для отправки данных указанному одноранговому узлу.

+0

Есть ли какие-либо сообщения в блоге, которые лучше объясняют, как использовать потоки в соединении между сетями, поскольку ссылка на фреймворк не входит в эту деталь, и я не совсем понимаю, что бы я вложил внутрь своей функции потока, чтобы отправить через let say например, целое число на регулярной основе –