gpt4 book ai didi

ios - 如何在核心数据中为两个实体场景构造数据

转载 作者:行者123 更新时间:2023-11-28 16:07:26 25 4
gpt4 key购买 nike

我想要这两个实体:

Payment
- name
- date
- value

Day
- date
- value

我想使用 Day 实体在一天结束时保存 Payments 的总数,以便更容易地计算周/月/年的平均值。

我看不出这两者之间有任何关系。我是否必须为每个实体使用上下文?还是有一种简单的方法来使用支付实体?

最佳答案

I don't see any relationship between these two.

您应该在日期和付款之间建立一对多关系。

enter image description here

您可以在 Day 实体的 Relationships 部分添加关系。不要忘记设置反向关系和 To Many 类型。

enter image description here

Day 的 average 属性的两种方法:

  1. 将其存储在 CoreData 中,并在当天每次添加新的付款对象时进行更新。如果您需要经常读取平均值,这将很有意义。
  2. 您可以定义 Day 实体的计算属性,并使用该特定日期的所有 payments 对其进行动态计算。如果您经常这样做,这可能会导致性能问题,但您不需要在每次插入或删除付款时都更新该值。

附言您说您还需要计算平均月/年。只是不要为此目的使用 Day 的平均值。我的意思是一个月的平均天数不是那个月的平均付款

Do I have to use a context for each entity?

不,你不知道。您的实体应该生活在相同的上下文中。

Or is there a easy way to just use Payment entity ?

您完全可以在没有 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
}

关于ios - 如何在核心数据中为两个实体场景构造数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com