2009-10-30 64 views
2

我正在研究一個核心數據iPhone應用程序,它將Web中的遠程資源拖入NSManagedObjects並將其保存到本地。保存一些NSManagedObjects而不是其他的方法?

我希望用戶能夠指定應保存這些對象中的哪一個。這意味着一些將被保存,但許多應該被刪除。不過,我可能希望在不同的時間保存和刪除 - 我希望立即保存指定的對象(以防應用程序崩潰),但仍然保留其他對象,因爲它們在表視圖中等待。

我能想到的一種方法是擁有一個不同的持久性商店 - 一個用於保存的東西,一個用於不會的東西;這樣我可以隨時保存「應該保存」的商店。但是,我更願意將相同類型的對象保留在同一個域中。

另一種方法是在最後保存 - 否定任何從崩潰中恢復的能力。但最終的保存將允許我解析出任何未被指定爲「應該保存」的對象。

而這正是我想要的 - NSManagedObject類中的「shouldSave」方法,或者至少可以在選擇對象時觸發的保存方法。但據我所知,這些都不存在。

所以,如果有人有任何其他建議,請讓我知道!這將不勝感激。

回答

2

CoreData不用於對象序列化,它是一個對象圖序列化。這是一個重要的區別。一旦你有一個NSManagedObject,它就與一個上下文相關聯,CoreData處理上下文級的保存,因爲這是保證任何類型的對象圖一致性的唯一方式。換句話說,你不能保存單個對象,因爲如果它們與其他對象有關係,你還需要保存這些對象,並且它會很快地降級到整個圖形。

你似乎擔心崩潰恢復。如果應用程序崩潰並且用戶重新啓動,那麼他們希望只看到它們保存的項目,或者它們在崩潰之前在屏幕上顯示的所有內容?如果是前者,則應在保存時刪除它們,並將其從用戶視圖中刪除(使用某些動畫),如果是後者,則應該提交所有內容,並可能在另一時間刪除您不感興趣的對象。

+0

我認爲我的Rails背景只是希望核心數據是一個「智能圖形」,可以級聯保存相關對象而不必保存其他所有內容:) 不是這樣,我想過你的問題的崩潰恢復,這是非常有益的。我認爲我最好的選擇是保存下載的所有內容,稍後再刪除 - 比如用戶進行新的搜索,有效地清除上次搜索中的任何對象,以及在啓動時進行一般清理。 非常感謝您的意見! – 2009-10-30 17:56:01

相關問題