如何在重置之前向日志添加值(CoreData 和 Swift)

Posted

技术标签:

【中文标题】如何在重置之前向日志添加值(CoreData 和 Swift)【英文标题】:How to Add Value to Log Before Resetting (CoreData & Swift) 【发布时间】:2015-08-06 16:27:28 【问题描述】:

背景信息:我有一个简单的计数计数器/习惯跟踪应用程序,它使用自定义单元格填充表格视图 - 计数器。点击单元格会显示特定计数器的详细视图,其中包含该计数器的名称、值和时间段(每天/每周/每月/每年/总计)。我还在 CoreData 中存储了每个计数器的 startDate 和 endDate,因此每个计数器都会在一定时间后重置。

我想做的事:每次计数器重置时(例如一天或一周后),我希望将其当前总值添加到日志中(最好是某种数组)特定于该计数器。然后,这将填充另一个 tableview,以便在几周后,我可以回顾并查看以前的每周总计并将其与当前一周进行比较。

我的数据结构:

实体:计数器

属性:Value (Int), startDate(NSDate), endDate(NSDate), timePeriod(Int) (注:对于timePeriod,0到4的每个整数代表每天/每周/每月/每年/不重置。)

我的问题:我该如何实现?我是否创建另一个具有每次重置计数器时创建的日期和值属性的实体?我无法想象如何使用 CoreData 执行此操作。

附:我不认为使用 tableview 和 fetch requests 是我正在寻找的。​​p>

非常感谢您的帮助,如果您需要任何澄清,请询问我!

【问题讨论】:

【参考方案1】:

最简单的方法是不“重置”计数器,而是创建一个新计数器。然后,您可以轻松地显示过去的计数器。这样可以避免创建新实体。

为了更简单地将它们与活动计数器区分开来,您可以添加activearchived 之类的标志。您可以在获取的结果控制器中使用该标志作为方便的谓词。

【讨论】:

感谢您的回答!不过,我有一个澄清问题:由于人们将有多个计数器,我如何查询以仅返回特定计数器的结果?我不能使用相同的名称,因为可能有多个具有相同名称的计数器,并且因为用户可以随时编辑计数器名称,所以它可能会更改。 只需使用另一个属性来进行区分。例如,您定义或让用户定义的计数器 type,无论名称如何。

以上是关于如何在重置之前向日志添加值(CoreData 和 Swift)的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 向实体行添加新关系

如何在运行作业之前使用用户界面向 gitlab 作业添加选项?

SwiftUI CoreData - 如何更新获取请求和列表

父 MOC 使用来自子 MOC 的空数据获取更改

如何在 CABasicAnimation 结束之前重置它?

如何向数据模型文件创建的 NSManagedObject 子类添加属性?