2012-11-02 159 views
2

我有一個非常惱人的問題與coredata。 我有一個NSManagedObject sublcass,即「客戶」,一切都很好。 有時我需要在coredata堆棧之外創建一個新的客戶,並且只有在某些情況下我需要保存它。如何在沒有coredata的情況下創建nsmanagedobject的實例?

我知道我可以使用NSUndomanager,但它似乎不是一個好主意。

現在我有兩個類Customer_managed(NSManagedObject的子類)和Customer_unmanaged(NSObject的子類)。 在Customer_unmanaged中,我添加了一個 - (void)保存方法,但這兩個類非常耦合,我正在尋找最佳模式。

感謝

+0

您不打算在上下文之外創建實例,這是在文檔中指定的。你爲什麼需要這樣做?也許有另一種方法可以避免需要這樣做。 – paulbailey

回答

0

可以創建一個沒有上下文的NSManagedObject。 Marcus Zarra寫到in this SO-answer。一個建議的話:如果你嘗試創建一個沒有上下文的對象,awakeFromInsert:將不會被調用。

0

你要對這個錯誤的方式。您應始終使用託管對象上下文來創建託管對象。如果您想放棄它,只需在保存之前刪除該對象,並且它永遠不會觸摸持久性存儲。

如果要保持兩個實體分開,請考慮使用單獨的上下文。

或者,考慮保存「非託管」實體,但用另外的布爾屬性unmanaged標記它們。您可以隨時清除它們,或在提取時忽略它們。

+0

保存之前刪除在我的情況下不是一個好主意,也許我的方法是完全錯誤的,但我需要非託管對象。第二個想法非常聰明,我可以添加一個布爾值,並且只有當我需要爲此對象添加持久性時才設置爲true。但我需要改變我以前的最重要的,所以...我選擇了Adun Kjelstrup的答案。感謝大家。 – IgnazioC

相關問題