如何在Core Data中构建数据以用于以下场景

时间:2015-12-13 11:58:52

标签: ios core-data

我在Person中有一个Core Data对象存储,它包含两个属性:

  • 名称
  • 付款

现在我决定还要存储一天/每月/每年的平均付款。

我应该如何将其存储在Core Data中?在Person对象里面?创建新对象?

1 个答案:

答案 0 :(得分:2)

解决方案不是存储摘要数据。您可以向托管对象子类添加便捷方法以提供所需的值。这些方面的东西:

func averageForPeriod(startDate: NSDate, endDate: NSDate) -> Double {
    guard self.payments != nil else { return 0 }
    let periodPayments = (self.payments as Set<Payment>).filter {
         $0.date >= startDate && $0.date <= endDate
    }
    return periodPayments.valueForKeyPath("@avg.amount").doubleValue
}

注意:要比较这样的日期,您需要定义自己的比较功能,如here所示,或者您可以使用NSTimeInterval