我有以下实体:
class Payment: NSManagedObject {
@NSManaged var name: String
@NSManaged var amount: Double
}
在某一天,我会得到多次付款。在一天结束的时候,我想把总的付款金额存到某个地方:
class TotalPayment {
@NSManaged var date: NSDate
@NSManaged var total: Double
}
我需要这个,因为在某个时刻,我想得到一个特定时期内每天的总付款。
例如,我想取过去30天或100天内支付的总金额,因此我需要该期间的
TotalPayment::total
属性之和。但我不知道如何在这两者之间建立关系。
TotalPayment
不包含Payment
对象,只是Payment::amount
的总和。这个设计不好吗?如果是的话,有什么正确的方法吗?
最佳答案
您应该在Payment
实体中有一个date属性,这就是您所需要的。
要对某个时段求和,只需确定要求和的时段的开始日期和结束日期,然后使用此谓词获取:
NSPredicate(format: "date > %@ && date < %@", startDate, endDate)
键值编码将有助于您计算和的效率和极大的方便。
let sum = results.valueForKeyPath("@sum.amount") as! NSNumber
关于ios - Core Data中没有关系的两个实体设计不好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34470255/