簡體   English   中英

如何屬性保存與其他實體具有一對多關系的更新管理對象?

[英]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記錄將僅存儲GoalProgressObjectID GoalProgress記錄都不會存儲關於它們相關的指標的任何信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM