2017-07-30 58 views
0

我想實現2個時間戳到我的Realm對象created_atupdated_atRealm created_at&updated_at時間戳

created_at只會在對象第一次插入數據庫時​​設置一次。

updated_at每次修改和保存對象時都會存儲新的時間戳。

我發現我可以做到這一點的唯一方法,就是使用存儲庫模式,使用createupdate函數,然後設置時間戳。然而,採用這種模式意味着重構相當多的代碼。

從我可以告訴境界對象沒有任何形式的掛鉤,如beforeSave & afterSave,我可以在對象模型本身,這會是一個有用的替代實現的。

除了存儲庫模式,或者手動更新任何realm.write的整個應用程序之前的時間戳,我還有其他方法可以完成此任務嗎?

回答

1

您有兩種方法可以通過Realm來實現您正在查找的內容。

第一種方法是Key-Value Observation,它實現了具有相同名稱的廣泛使用的設計模式。請參閱Apple's documentation on the topic

第二種方法是Realm自己的替代方法,稱爲Notifications。您可以將每個寫入事務的通知發送到特定的Realm實例,並處理您需要處理的事務,或者您可以註冊關於single Objects的通知。

當您觀察/獲知有關對象更新的通知時,可以使用這兩種方法更新Realm對象的updated_at屬性。處理created_at屬性更容易,只需在對象初始化時將其設置爲不可變的值,或者甚至可以在對象初始化函數內自動執行。

+1

感謝您的回覆David(再次)。如果我有一個集中的「時間戳管理器」,只管理每一個可能是個好主意的模型。 我確實考慮過'created_at'的初始化日期,但是後來我發現它只有在獲取並保存一個對象而不是使用'realm.add'的更新選項時纔有效。如果你「抓取並保存」,日期一旦設置就不會改變,但是用'realm.add(obj,update:true)','created_at'就會變成'updated_at',而我覺得它是flaky ...我會給通知去:) – TRG

相關問題