2016-04-11 44 views
0

CNContact nesnelerini Çok Veri Bağlantısı üzerinden başka bir aygıta gönderilmek üzere NSData'ya dönüştürmeye çalışıyorum.CNContact'ı NSData'ya dönüştürme ve tersi

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)") 
    } 
} 

Ve bu alan kişiler için ise: İşte benim kod rehber verilerini göndermek için var

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) 
    } 
} 

veri sıfır olmadığını belirtir NSData için baskı açıklamada, için çıkış yoktur. Ancak nesneyi CNContacts dizisine arşivlemeyi denediğimde, nil döndürür. Herhangi bir fikir neden?

Ayrıca, bir dizi yerine yalnızca bir CNContact nesnesi göndermeyi denedim, ancak sonuçlar aynı.

cevap

0

CNContact verilerini yanlışlıkla yukarıdaki kodda arşivlediğimi anladım ve arşivden çıkarmak için yalnızca bir kez yaptım. biri aşağıda çalışır arşivden için kod değiştirme: it

func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) { 
    print("Received data: \(data) From Peer: \(peerID)") 

    if let contactsData: NSData = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? NSData { 
     if let contacts: [CNContact] = NSKeyedUnarchiver.unarchiveObjectWithData(contactsData) as? [CNContact] { 
      self.delegate?.didReceiveContacts(contacts, fromPeer: peerID) 
     } 
    } 
} 

Ama ancak sadece arşiv halinde CNContact nesne kez ve arşivden, bu işe yaramaz. Hala neden olduğu hakkında hiçbir fikrim yok.

0

CNContactVCardSerialization sınıfını gözden geçirin