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

时间:2017-06-30 07:47:13

标签: ios swift performance core-data

我有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

0 个答案:

没有答案