我希望通过多重连接框架发送和接收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
}
答案 0 :(得分:2)
将NSManagedObject
发送到其他设备的问题在于它已被持久保存到源设备上的Core Data,但不能简单地反序列化并插入到目标的持久存储中。
我建议将对象序列化为NSDictionary
,发送该数据,然后实现find-or-create以在目标设备上正确插入新的托管对象。
答案 1 :(得分:1)
不,这是不可能的。 NSManagedObject不仅仅是数据存储,它还有一个状态机。
要发送类似的数据,您需要将其转换为更原始的形式,数组,词典等。
答案 2 :(得分:0)