[英]Multipeer Connectivity send and receive NSManagedObject
我正在尋找通過多對等連接框架發送和接收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
}
將NSManagedObject
發送到其他設備的問題在於它已被持久保存到源設備上的Core Data,但是不能簡單地反序列化並插入到目標的持久性存儲中。
我建議將對象序列化為NSDictionary
,發送該數據,然后實施查找或創建以在目標設備上正確插入新的托管對象。
不行,這是不可能的。 NSManagedObject不僅僅是一個數據存儲,它還具有一個狀態機。
要發送這樣的數據,您需要將其轉換為更原始的形式,數組,字典等。
Bummer,我對此感到害怕。 感謝您的兩個回答! 看來我將序列化成字典。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.