2011-05-25 29 views
1

我有一個現有的數據庫(SQL Server),它有幾個使用主/外鍵關係連接的表。數據庫包含數據並用於填充網站。將現有數據導入CoreData

我現在想在使用CoreData的Mac/iOS應用程序中使用這些數據,並創建了Apple(以及網上許多其他人)指定的數據模型和關係。我有一個簡單的服務,可以從遠程系統中提取數據,但現在正在努力研究如何使用我的CoreData模型在設備上保存這些數據。

由於CoreData是一個對象圖,而不是數據庫,我不知道如何保留我的主/外鍵關係,因爲這是一個從開發者處抽象出來的CoreData實現細節。我在遠程系統中的數據依賴於這些已經形成的關係來正確運行。

有沒有人知道如何解決這個問題或之前遇到過嗎?或者我是從錯誤的角度來看待這個問題?

無論哪種方式,我需要一些方法將我的遠程數據複製到Mac/iOS設備上。

非常感謝提前。

回答

1

外鍵是核心數據中的關係。要傳輸數據庫,您需要通讀每一行並在Core Data中創建一個新實體。要重新創建關係,您可以在其中存儲舊的id數據,然後查詢具有該id的實體的Core Data,並創建關係。如果您只需要轉移一次,則可以在導入完成時刪除ID。

+0

這就是我在想什麼。無法理解我的CoreData實體將與數據庫有關係和FK。然後,這轉化爲我的實體模型類,它具有NSManagedObject(CoreData關係)的屬性和INT類型的屬性以保存數據庫中的FK。因此,爲什麼我想知道這是否是正確的方法,並讓其他人做了這樣的事情(不相信我是第一個!)。即一個用戶有一個地址,所以我的用戶實體模型類將具有一個地址實體(NSMangedObject)和一個AddressId(int)的屬性。 – Cragly 2011-05-25 18:02:34

+0

我認爲你的用戶實體將有一個指向Address實體的關係。 Address實體將擁有一個addressId屬性,最初來自數據庫。您將首先填寫核心數據地址(以便用戶可以指定某些內容)。當您添加一個用戶時,找到地址標識與數據庫用戶對應的地址。然後將用戶關係設置爲您找到的地址實體。 – 2011-05-25 18:24:34

+0

如果這個方法看起來很困難,你可以嘗試直接插入Core Data sqlite數據庫。通常不推薦,但本教程告訴你如何。 http://www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data – 2011-05-25 18:29:43

相關問題