2010-03-25 74 views
1

我想以編程方式(沒有輕量級遷移)創建兩個完全相同的模型之間的映射模型,除了其中一個實體(有一堆實體)具有不同的屬性。我們稱這個實體爲「Person」。而假設目標模型編程創建NSMappingModel

1)增加了一個名爲「地址」新屬性

2)刪除名爲「眼睛顏色」

3)的屬性保持(即沒有做任何事情)的屬性稱爲「名稱」

你將如何在這些模型之間以編程方式創建NSMappingModel?我碰巧有可能幫助我通過自己做一些這方面的明確的問題:

Q1)我一定要創造NSEntityMapping對象爲所有實體其他比「人」的,即使他們保持不變? Q2)我如何處理「Person」中的「地址」屬性,它是一個新的被創建的?我應該爲此創建一個NSPropertyMapping,它不會變成什麼東西(「地址」)?

Q3)我如何處理「Person」中的「name」屬性?我是否必須爲此創建NSPropertyMapping,即使它保持不變?

Q4)對於與「Person」對應的NSEntityMapping,是而不是爲「eyeColor」創建任何NSPropertyMapping一個正確的方法來刪除它?或者我應該爲「眼睛顏色」創建一個NSPropertyMapping?如果是的話,這個對象將如何創建,即什麼決定其目的是擺脫「eyeColor」?

預先感謝您,我很抱歉無法自己回答這些問題,因爲文檔確實沒有如何以編程方式創建NSMappingModels的良好示例。再次請注意,我不允許使用輕量級遷移。我必須手動執行此操作。

回答

1

我一直使用Xcode的自動映射功能,但在我看來,你也可以從中學到很多東西。製作源模型(的一部分)的模型,添加一個版本,修改它以反映目標模型並生成一個映射模型(菜單設計>>映射模型)。如果您按住Control鍵並單擊Xco​​de爲您生成的.xcmappingmodel,並通知Finder向您顯示包的內容,您將在其中找到一個XML文件,其中列出了所有映射。您可以使用xml作爲指導,幫助您在代碼中重新創建過程。祝你好運。