2009-09-02 65 views
12

我有一個實體對象具有國家名稱和國家代碼的國家。它是NSManagedObject的一個子類,我將它與核心數據模型一起使用,以將其值存儲到持久存儲中。作爲普通對象的被管理對象之外的NSManagedObject子類

我有一個地方,相同的國家對象將用作一個普通的對象,即我將用它來存儲一些臨時的國家名稱。

對於我初始化了國家如下

[NSManagedObject alloc] init] 

初始化成功完成,但我不能給任何屬性設置爲對象。 因此我做了一個探索。在那我發現,根據文檔不支持NSManagedObject的init。

我不知道如何使用CoreManager的NSManagedObject國家以及普通的對象。

回答

10

的NSManagedObject類的文檔的概要的第二段:

(包括 的名稱

管理對象與一個 實體描述( NSEntityDescription的一個實例),其提供關於對象 元數據相關聯對象 表示的實體以及其 屬性和關係的名稱)以及與 一起管理對象上下文,該對象上下文跟蹤 對對象圖的更改。這是 重要的是一個被管理的對象是 正確配置用於核心 數據。 如果直接實例化管理的對象 ,則必須調用 指定的初始化程序 (initWithEntity:insertIntoManagedObjectContext :)。

從方法的文檔:

重要:此方法是 NSManagedObject的 指定的初始化。你不應該 簡單地通過 初始化一個被管理的對象。

該文檔實際上是非常好的。

你不想嘗試在可行的CoreData棧之外使用NSManagedObject。 NSManagedObjects非常明確地設計爲在正確配置的Core Data環境中工作。如果您需要一個臨時實例,您可以創建一個內存中的存儲或在常規存儲中創建一個存儲,並且不要先保存更改而不刪除它。

+0

謝謝!所以不可能像我們爲普通對象進行初始化。 我想你是指永久性存儲的NSInMemoryStoreType,所以插入的實體將被存儲在易失性RAM內存中。 我還有一個問題 - 實際上它會被清除,或者我們必須手動清除它? – raksja 2009-09-02 12:03:42

+0

當您告訴它清除(手動)或您的應用程序退出時,它將被清除... InMemoryStores與其他存儲一樣工作,只是持久性...僅在內存中。 – bbum 2009-09-02 15:28:14

2

使用initWithEntity:insertIntoManagedObjectContext:並通過nil管理對象上下文

相關問題