Ich versuche, Objekte in NSData konvertieren über Multipleer Connectivity an ein anderes Gerät gesendet werden. Hier ist mein Code für das Senden der Kontakte Daten:Konvertieren von CNContact zu NSData und umgekehrt
func sendContactsToPeer(peerId: MCPeerID, contacts: [CNContact]) {
let contactsData: NSData = NSKeyedArchiver.archivedDataWithRootObject(contacts)
do {
try self.session.sendData(NSKeyedArchiver.archivedDataWithRootObject(contactsData), toPeers: self.session.connectedPeers, withMode: MCSessionSendDataMode.Reliable)
} catch {
print("Unable to send contacts data to \(peerId.displayName)")
}
}
Und das ist für den Empfang Kontakte:
func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) {
print("Received data: \(data) From Peer: \(peerID)")
if let contacts: [CNContact] = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? [CNContact] {
self.delegate?.didReceiveContacts(contacts, fromPeer: peerID)
}
}
Es gibt Ausgang für die print-Anweisung für die NSData
, was darauf hindeutet, dass die Daten nicht gleich Null ist. Aber wenn ich versuchte, das Objekt in ein Array von CNContacts zu entpacken, gibt es nil zurück. Irgendwelche Ideen warum?
Beachten Sie, dass ich auch versucht habe, nur ein einzelnes Objekt anstelle eines Arrays von ihnen zu senden, aber die Ergebnisse sind die gleichen.