簡體   English   中英

如何在Objective-C中動態創建實體?

[英]How to create Entity dynamically in Objective-C?

我正在構建一個iPad應用程序,我需要用戶動態創建實體。 我已經有3個程序使用的實體。
你能幫我解決一下代碼怎么做?

我想根據我的理解了解整個結構我必須創建新的managedObjectModel,添加新實體,然后將其與現有實體合並,是否正確?

這是正確的 - 您將創建一個NSEntityDescription對象數組,然后在新的托管對象模型上調用setEntities: . 然后,最后,您將該模型與您的內置模型合並。

但請注意,一旦模型用於創建托管對象上下文(或用於存儲),就無法更改模型。 更改模型后,您需要創建新的存儲和上下文。

雖然可以在實踐中動態創建新實體和新模型,但這非常復雜。 如果沒有別的,您將不得不將任何現有的持久數據遷移到新模型和新的持久性存儲文件。 如果您剛剛開始使用Core Data,我強烈建議不要嘗試這種方法。

你有選擇:

首先,你確定你真的需要一個新的實體嗎? 剛開始使用Core Data的人經常將實體誤認為是托管對象。 實體是管理對象,因為類是實例。 實體是用於創建對象圖的抽象。 它們實際上並不包含數據。 您需要新實體的時間非常非常罕見。

其次,如果您確實需要某種動態實體,通常最好將動態實體分解為多個固定子實體,然后使用關系創建虛擬實體。 例如,您需要一個動態Person“實體”,因此您可以在模型中創建多個實體,每個實體都擁有該人員的一個屬性。 您可以擁有一個Field實體,該實體具有fieldName屬性,然后是fieldValue屬性。 然后有一個實際的Person實體,它沒有屬性,只是與必要的Field對象的關系。 您可以向任何人添加所需的任何字段,然后通過將關系移動到其字段來重構虛擬人物對象。

但我很懷疑你需要那種靈活性。 這種需求非常罕見。 我會退后一步,確切地看到您認為用戶可能需要輸入的動態數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM