2015-09-21 31 views
2

我正在尋找通過multipeer連接框架發送和接收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到不同的設備的問題是,它已經被保存到核心數據在源設備上,但不能簡單地反序列化並插入到目標的Persistent Store中。

我建議將對象序列化爲NSDictionary,發送該數據,然後實現查找或創建,以便在目標設備上正確插入新的託管對象。

0

Bummer,我很害怕那個。謝謝你的答案!看起來我會序列化成字典。