我有一個問題,我有一組CoreData的對象,像這樣:CoreData關係並不一致(SWIFT)
組織>客戶>訂單> ordersku
若該等關係是單太多。
從排序屏幕能正常工作爲以下幾點:
打印(order.customer.getJSON()) - (客戶包括JSON其含訂單)
[
"id": 300,
"orders": ({
customer_id = 300;
deliverydate = "<null>";
id = "-681F71DDA4B5413782A6150C10F7A314";
skus = ({
code = "CC1";
id = "-4B5C1EE9DB8745A8963F6167C6DAA4F3";
},
code = "CC2";
id = "-B3FB1A7F13334351AF9D85D9150730A1";
});
}),
]
但是,如果我在嘗試更深入地將這些對象放入關係中時嘗試相同:
print(order.customer.organisation.customers()。first!.getJ SON()) - (當組織只有一個客戶)
[
"id": 300,
"orders":(),
]
我根本就沒有得到任何訂單。然後,當我嘗試爲客戶生成JSON時,這證明是有問題的。
這兩個請求直接相互執行,意味着模型的狀態不應該在兩者之間變化。
let cus1 = order.customer
print("== \(cus1.getJSON())")
let cus2 = order.customer.organisation.customers().first!
print("== \(cus2.getJSON())")
if cus1 == cus2 {
print("MATCHED")
} else {
print("UNMATCHED")
}
它導致「UNMATCHED」,儘管ID相同,或概念上指的是同一個唯一的客戶。
如果有幫助,下面是我在組織中使用的customers()方法的代碼,它只是指關係而不是試圖從上下文中檢索對象。
func customers() -> [Customer] {
var customers = relatedcustomers.allObjects as! [Customer]
return customers
}
你是否以某種方式在代碼中創建了兩個單獨的客戶實例?如果是這樣,使用'if cus1.objectID = cus2.objectID {}'這樣的類似'NSManagedObjects'可能更安全。 –