Ios 如何使用核心数据提高循环函数的性能?

Ios 如何使用核心数据提高循环函数的性能?,ios,swift,performance,core-data,Ios,Swift,Performance,Core Data,我有两个实体: class Month: NSManagedObject { @NSManaged var date: Date @NSManaged var services: Set<Service> var duration: Int { return services.reduce(0) { $0.duration } + surplusForPreviousMonth } var surplusFor

我有两个实体:

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
}
班级月份:NSManagedObject{
@NSVAR管理日期:日期
@NSVAR托管服务:设置
变量持续时间:Int{
返回服务。减少(0){$0.duration}+上个月的盈余
}
上月风险值盈余:整数{
让date=/*为'date`*计算上个月
guard let PREVIOUSMONTH=Month.mr_findFirstWithPredicate(谓词:NSPredicate(格式:“date=%@”,date))else{
返回0
}
返回(上一个月。持续时间%3600)
}
}
类服务:NSManagedObject{
变量持续时间:Int
@NSVAR管理月:月
}
但是这很费时,因为我每个月都有很多的时间和很多的服务。我怎样才能改进它

它必须是良好的计算,一旦我改变任何服务的持续时间。任何服务变更的持续时间未来几个月的持续时间


我怎样才能加快速度?我几乎到处都使用
month.duration

递归函数在哪里?很抱歉,但是递归在哪里?哦,对不起,我认为它不是递归的。。。但是每个月都要打电话,除非找不到month@Bartłomiejsemanńczyk show query代表/*查找并获取上个月*/也可以创建替代的惰性变量吗?我认为惰性变量不会工作,因为每次我再次从持久性存储中获取月份。我说得对吗?