2015-09-21 6 views
2

Я ищу для отправки и получения NSManagedObject через инфраструктуру соединения межсетевого соединения.Multipeer Connectivity отправляет и принимает NSManagedObject

class MyObject: NSManagedObject { 

@NSManaged var name: String 
@NSManaged var children: NSSet 

}

Я сумел отправить строки и словари, но мне нужно отправить NSManagedObject с NSSet. Это возможно?

Здесь не то, что я пробовал:

let data = NSKeyedArchiver.archivedDataWithRootObject(nsmanagedobject) 

    if session.connectedPeers.count > 0 { 

     var error: NSError? 
     if !session.sendData(data,toPeers: session.connectedPeers, withMode: .Reliable, error: &error){ 

      println("SEND ERROR:") 
      println(error) 

     } 

    } else { 

     println("NO PEERS CONNECTED!") 

    } 

func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) { 

    NSLog("%@", "didReceiveData: \(data.length) bytes") 

    let nsmanagedobject = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! MyObject 

} 

ответ

1

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

Для передачи данных, как, что вам нужно, чтобы преобразовать его в более примитивную форму, массивы, словари и т.д.

2

Проблемы с отправкой в ​​NSManagedObject к другому устройству, что оно было сохранялось в Core Data на исходном устройстве, но его нельзя просто десериализовать и вставить в постоянное хранилище цели.

Я предложил бы сериализацию объектов в NSDictionary, посылку этих данных, а затем реализацию find-or-create для правильной вставки новых управляемых объектов на ваше целевое устройство.

0

Bummer, я боялся этого. Спасибо за ваши ответы! Похоже, я буду сериализоваться в словаре.