2015-04-02 66 views
0

我正致力于项目的缓存功能。数据从服务器下载,然后作为具有特定属性的NSManagedObjects保存到核心数据存储中。我想知道是否有办法知道对象属性的值的最后一次更新是什么时间(我必须跟踪属性,而不是整个对象,因为它们可能会单独更新)。核心数据 - 获取对象属性最近一次更新的日期

例如,让我们假设我有一个名为报告具有以下属性的对象:

NSManagedObject Report: 
- reportName; 
- reportAssignee; 
- reportInfo; 
- reportId; 

我想从服务器下载数据报表,但我只选择和所以reportName领域reportId。所以我保存接收到的信息对象,这里就是我们现在有:

NSManagedObject Report: 
- reportName - MyReport; 
- reportAssignee - not updated; 
- reportInfo - not updated; 
- reportId - fbbcc939393-sdfsjd49340. 

我怎么能知道,性能和所以reportName分别reportId更新2015年4月2日和性能reportDate,reportAssignee,reportInfo weren` t更新了吗?

当然,也可以为对象中的每个属性创建包含上次更新日期的重复属性,但我希望有更好的方法来完成它。

+0

我会把'reportDate'作为timeStamp而不是日期对象。然后,如果从服务器检索到所有属性,我只会设置'reportDate'。如果您知道已检索完整的对象信息,则只应设置该字段。否则,您必须为每个值跟踪一个时间戳(或跟踪两个reportDates - 一个用于名称/ ID,另一个用于受理人/信息)。 – LyricalPanda 2015-04-02 18:06:12

+0

有一个误解 - reportDate不是我想存储上次更新日期的属性,它只是一个示例属性。我最好把它从问题中删除。我的问题恰恰是跟踪对象中的每个值。对象完全更新时只存储一个日期根本无法帮助我。世界卫生组织更新实体时是否有 – Werewolf 2015-04-02 22:54:25

+0

?你的应用程序?那你为什么要下载它? – 2015-04-03 08:27:52

回答

0

嗯,我认为,在这种情况最好的办法是在对象创建一个新的属性:

NSManagedObject Report: 
... 
- (id) updateInfo; 

和存储有一个NSDictionary,其中关键是object_property_name和值是当这个属性被更新的日期。因此,如果我们从服务器下载报告对象的reportName属性并保存这些数据 - 我们应该将值为“04-02-2015”的键NSStringFromSelector(reportName)添加到updateInfo属性的字典中。