我想要这两个实体:
Payment
- name
- date
- value
Day
- date
- value
我想使用Day
实体在一天结束时保存Payment's
的总数,以便更轻松地计算周/月/年平均值。
我认为这两者之间没有任何关系。我是否必须为每个实体使用上下文?或者有一种简单的方法来使用Payment实体吗?
答案 0 :(得分:1)
我认为这两者之间没有任何关系。
您应该在日期和付款之间建立一对多关系。
您可以在Day实体的Relationships
部分添加关系。不要忘记设置反向关系和To Many
类型。
Day average
属性的两种方法:
payments
动态计算它。如果您经常这样做,可能会导致性能问题,但每次插入或删除付款时都不需要更新值。P.S。你说你需要计算平均月/年。只是不要将Day的平均值用于此目的。我的意思是一个月内的平均天数不是该月付款的平均值
我是否必须为每个实体使用上下文?
不,你没有。您的实体应该生活在相同的环境中。
或者有一种简单的方法可以使用Payment实体吗?
你可以在没有Day实体的情况下完成它,只需通过实现Payment
的便捷类方法,如下所示。同样,缺点是每次需要平均值时都要进行所有这些获取操作和计算,如果您经常需要它,这不是最佳解决方案。
class func payments(from fromDate: NSDate, to toDate: NSDate) -> [Payment] {
let predicate = NSPredicate(format: "date > %@ && date < %@", fromDate, toDate)
//fetch and return payments with predicate
}
class func average(from fromDate: NSDate, to toDate: NSDate) -> Double {
let payments = payments(from: fromDate, to: toDate)
//calculate average of fetched payments
}