3

我有一個部署的應用程序,用於從傳感器採樣測量結果(例如,溫度°C,壓力千帕)。用戶可以創建實驗並收集樣本。每個樣本都以Run的形式存儲,這樣從Experiment到Run就有一對多的關係。爲了提高性能,Run與Data實體(這是存儲實際原始數據的地方)有一對一的關係;這允許加載一些運行屬性而不必加載大量數據。核心一對多關係到多對多關係的數據遷移

我們的大多數傳感器都有多個測量值,因此存儲實際採樣的所有數據將會很好。但這意味着運行< --->數據關係需要變成運行< - >>數據(使用Xcode的約定)。

我面臨着嘗試將舊的運行一對一數據模型的數據遷移到新的運行對多數據模型。這可以使用映射模型來完成嗎?如果是這樣,有沒有人有任何指向例子?如果沒有,有沒有人有任何指示如何做到這一點的例子?

感謝您的任何指示或建議。

回答

1

我最終需要多次子類化NSEntityMigrationPolicy。這是必要的,因爲屬性從不同的實體移動到不同的實體,添加了幾個抽象級別以支持更通用的模型。映射模型中實體映射的排序也很重要。

最終,我不得不設置選項-addPersistentStoreType:配置:網址:選項:錯誤:到:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil]; 

從而省略NSInferMappingModelAutomaticallyOption。

3

該遷移應該足夠簡單,自動遷移將可以工作。最糟糕的情況是,它需要一個映射模型,但我懷疑它會「開始工作」,通過開啓自動遷移。

+0

謝謝,馬庫斯。唉,在我問這個問題的那一刻到現在,模式變得相當複雜了。然而,仔細閱讀(即仔細閱讀),您的核心數據手冊幫助了很多 - 與您的相關遷移代碼一樣。 我擔心我很快就會繼承NSEntityMigrationPolicy。 – westsider 2010-05-10 22:57:12