2011-08-02 24 views
0

我想在同一個sqlite數據庫中創建兩個表。現在,這兩個managedObjectModel不在同一個實例中運行。讓我解釋一下......我運行一次應用程序,然後以編程方式在持久性存儲中創建managedObject。假設我有5個屬性。然後我再次運行它,並在持久性存儲中創建一個新的managedObject,但是這次我只使用了3個屬性......我怎麼能使這成爲可能?現在它崩潰,因爲屬性的數量不匹配。兩個不同的managedObjects和一個sqlite數據庫?

謝謝!

+0

我很困惑你的問題描述。你在這個應用程序中使用核心數據?您是否將新實體添加到數據模型?是否有任何代碼可以讓你更清楚你想要完成什麼? –

+0

我正在使用核心數據是的。我以編程方式創建了managedObjectModel,而不是使用xcdatamodel。 managedObjectModel根據X的多少來創建X個屬性(讓我們說X是從其他地方收集的,所以它並不總是相同的)。因此,如果我運行一次應用程序並且X = 5,則managedObjectModel將創建5個屬性(稱爲attribute1 ...等)。然後,如果我再次運行它並且X = 3,那麼managedObjectModel將創建3個屬性。現在因爲我只使用一個SQLite數據庫,所以當屬性數量不一樣時,它會崩潰。 – Robert

+0

我得到的錯誤是:'此NSPersistentStoreCoordinator沒有持久性存儲。它不能執行保存操作。'我很確定這是因爲屬性數量衝突,雖然...因爲如果我將X設置爲一個常量,我不會收到錯誤。 – Robert

回答

1

最簡單的答案是不要以編程方式創建數據模型。它應該在設計時創建,而不是修改。相反,您應該設計您的數據模型,以便足夠靈活以滿足您的需求。例如,不是創建一個具有可變數量屬性的實體,而是創建兩個實體,一個實體與另一實體之間存在一對多關係,並存儲哪些信息會在您可變數量的屬性中出現。

+0

嗯,這似乎是一個似是而非的解決方案。好吧,可以說我創建了一個名爲「attributes」的關係給另一個模型。我如何訪問attribute1 ... attribute2等?這個其他模型應該包括什麼? – Robert

+0

我會從這裏開始http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html。而要清楚的是,你正在創建一個新的實體,而不是一個新的模型。你的關係將是你的第一個實體的屬性之一,並會返回你的第二個實體類型的對象的NSSet。它包含的信息完全取決於你。 –

+0

所以基本上如果我要求[實體valueForKey:@「屬性」]它會返回一個NSSet的值? 對不起,我一直在編程這麼多次,現在我忘了它們被稱爲實體。 – Robert

相關問題