[英]How to property save the updated managed object that has one-to-many relationships with other entities?
如果我的 Core Data 中有三個實體,它們彼此之間都具有一對多關系:
extension Progress {
@nonobjc public class func createFetchRequest() -> NSFetchRequest<Progress> {
return NSFetchRequest<Progress>(entityName: "Progress")
}
@NSManaged public var goal: Goal
@NSManaged public var metric: Set<Metric>
}
extension Metric {
@nonobjc public class func createFetchRequest() -> NSFetchRequest<Metric> {
return NSFetchRequest<Metric>(entityName: "Metric")
}
@NSManaged public var value: NSDecimalNumber
@NSManaged public var metricToGoal: Goal
@NSManaged public var progress: Progress
}
extension Goal {
@nonobjc public class func createFetchRequest() -> NSFetchRequest<Goal> {
return NSFetchRequest<Goal>(entityName: "Goal")
}
@NSManaged public var title: String
@NSManaged public var progress: Set<Progress>
@NSManaged public var goalToMetric: Set<Metric>
}
如果獲取實體之一並更新它:
let metricRequest = Metric.createFetchRequest()
metricRequest.predicate = NSPredicate(format: "value == %@", metric.value)
if let fetchedMetric = try? self.context.fetch(metricRequest) {
// update Metric
}
我是否還必須獲取其余兩個實體並將新更新的實體附加到它們?
if let fetchedGoal = try? self.context.fetch(goalRequest) {
fetchedGoal.goalToMetric.append(updatedMetric)
}
if let fetchedProgress = try? self.context.fetch(goalProgress) {
fetchedProgress.metric.append(updatedMetric)
}
或者 Core Data 足夠聰明,我只需要為更新的實體保存上下文,剩下的就由它來處理了?
我是否還必須獲取其余兩個實體並將新更新的實體附加到它們?
不。您可以在此處閱讀有關關系數據庫如何工作的更多信息。
Single Metric
對象對應於 CoreData 支持的數據庫中專用表中的單個記錄。 如果您更新Metric
value
- 無需更新關系。 在一對多關系的情況下,數據庫中的每個Metric
記錄將僅存儲Goal
和Progress
的ObjectID
。 Goal
和Progress
記錄都不會存儲關於它們相關的指標的任何信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.