我有2个实体:
class Month: NSManagedObject {
@NSManaged var date: Date
@NSManaged var services: Set<Service>
var duration: Int {
return services.reduce(0) { $0.duration } + surplusForPreviousMonth
}
var surplusForPreviousMonth: Int {
let date = /*calculate previous month for `date` */
guard let PREVIOUSMONTH = Month.mr_findFirstWithPredicate(predicate: NSPredicate(format: "date = %@", date)) else {
return 0
}
return (PREVIOUSMONTH.duration % 3600)
}
}
class Service: NSManagedObject {
var duration: Int
@NSManaged var month: Month
}
但这很耗时,因为我每个月都有很多个月和很多服务。我该如何改进呢?
一旦我改变了任何服务的持续时间,它必须很好地计算。任何服务的持续时间都会改变未来几个月的持续时间。
如何加快速度?我几乎到处都使用month.duration
。