如果我的核心数据中有三个实体,它们彼此之间具有一对多关系:
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)
}
还是核心数据足够聪明,我只需要保存更新后实体的上下文,其余部分就可以解决?