2015-06-24 132 views
1

我有更新核心數據模型時執行一些輕量級遷移的應用程序。核心數據在輕量級遷移後執行操作

但是,我想在遷移發生後執行一些特定操作作爲一次性操作。

例如,我有兩個NSManagedObjects ...... 文件DocumentLayout。目前,有除了由該應用尋找一個「documentName」在相應的對象相匹配的「layoutName文獻DocumentLayout之間沒有關係。

這是效率低下的,所以我想在兩者之間創建一個真正的核心 - 數據關係,然後在發生遷移後,通過迭代和創建關係鏈接兩個對象。

我看過的代碼,如...

NSManagedObjectModel *destinationModel = [persistentStoreCoordinator managedObjectModel]; 
BOOL pscCompatibile = [destinationModel isConfiguration:nil compatibleWithStoreMetadata:sourceMetadata]; 

...檢查是否需要遷移,並做相應的工作,但我需要這是一個一次性的操作有可能,在該應用的生命週期,被存儲在文獻文檔不需要與DocumentLayout的關係,因此,如果這種操作的更新是對數據模型每次做出運行時,一個關係將被創建這不是必需的。

所以,我可以看看(比如說)VERSIONNUMBER標誌檢測這一點,只有一次運行操作和防止它每次運行,但是這似乎不優雅且容易出錯的應用程序。

那麼,有沒有一種方法,特定遷移後運行一次的操作,則不會再運行?

回答

1

這是一個非常好的問題,我花了很多時間試圖弄清楚。最好的答案到目前爲止,我發現可以在這個article from ObjC.io(我與他們沒有隸屬關係)被發現。

道歉剛剛發佈的鏈接,但我認爲答案是很多比的代碼只需幾行更爲複雜。

+0

感謝您的鏈接。看起來沒有「簡單」的方法,除了監控代碼中的版本之外。很遺憾沒有從版本N的核心數據已經發生了特定的自動遷移......即被告知的方式,到版本N + 1,即使有多個遷移已經或正在發生。 – Fittoburst

相關問題