2010-12-18 34 views
0

我有一個通用模型框架,其中包含一些我希望用於各種應用程序的實體和關係。對於每個應用程序,我想在其中一個實體上定義一組特定的屬性。我認爲每個應用程序都可以定義一個實體,它是基本實體的子實體,但是如果孩子在不同的模型文件中,似乎並不像你能做到的那樣。如果我將所有子實體放在同一個模型文件中,那麼每個應用程序中的實體最終都將具有所有應用程序的屬性。CoreData:來自不同項目的公共基礎實體的不同子類

我現在唯一的解決方案是隻有基本實體,並且它的屬性是一個字典。然後,每個應用程序都可以編寫NSManagedObject的子類,該子類定義查找字典中相應值的屬性。我認爲這可能會有性能問題。

任何其他的想法,或思想我的字典方法?謝謝!

回答

1

當我發佈這個時,我還沒有意識到的一件事是,您可以通過編程方式修改模型。所以我在每個子項目中都開始這樣做,將子實體添加到項目特定屬性中。這解決了一段時間的問題。

但是,模型遷移是一個問題。我認爲,如果我在基礎項目的模型文件中更改了某些內容,則可以使用自動遷移或映射文件來遷移子項目所做的任何數據存儲。但是,由於子項目修改了模型,我不得不加載舊模型,修改模型,加載新模型,修改模型,然後在這兩者之間執行遷移。

所有這些都會很痛苦,所以我最終使用通用對象,屬性和值表將數據庫模式更改爲更靈活的模式。現在每個子項目都可以投入任何想要定義新類型對象的數據。

0

我有同樣的問題......我有一個基類,它定義了兩個CD實體通用的屬性和功能。但是當我嘗試從超類訪問一個值時,我得到一個錯誤。

這是我做的解決它。

製作你的數據模型,並按平常生成類。手動創建超類,作爲NSManagedObject的子類。給它與生成的類相同的結構,這意味着沒有聲明的變量,使用@dynamic,數字的NSNumber *等。

這對我來說是個訣竅。

相關問題