Multipeer Connectivity发送和接收NSManagedObject

时间:2015-09-21 13:00:05

标签: ios swift core-data multipeer-connectivity mcsession

我希望通过多重连接框架发送和接收NSManagedObject。

class MyObject: NSManagedObject {

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

}

我设法发送字符串和字典,但我需要发送带有NSSet的NSManagedObject。这可能吗?

以下是我尝试的内容:

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

}

3 个答案:

答案 0 :(得分:2)

NSManagedObject发送到其他设备的问题在于它已被持久保存到源设备上的Core Data,但不能简单地反序列化并插入到目标的持久存储中。

我建议将对象序列化为NSDictionary,发送该数据,然后实现find-or-create以在目标设备上正确插入新的托管对象。

答案 1 :(得分:1)

不,这是不可能的。 NSManagedObject不仅仅是数据存储,它还有一个状态机。

要发送类似的数据,您需要将其转换为更原始的形式,数组,词典等。

答案 2 :(得分:0)

不好意思,我很害怕。谢谢你的两个答案!看起来我会序列化成字典。