2015-04-02 72 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屬性的字典中。