CNContact
オブジェクトをNSDataに変換しようとすると、Multipeer Connectivity経由で別のデバイスに送信されます。ここでの連絡先データを送信するための私のコードだ:CNContactをNSDataに、またはその逆に変換する
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)")
}
}
そして、これは接点を受信するためのものである:
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)
}
}
データがnilでないことを示しNSData
ためのprint文の出力には、があります。しかし、私はCNContactsの配列にオブジェクトを展開しようとすると、nilを返します。なぜどんなアイデア?
私はまた、それらの配列の代わりに単一のCNContact
オブジェクトを送信しようとしましたが、結果は同じです。