2011-06-22 55 views
3

我正在嘗試爲我的應用程序創建具有一些自定義代碼的映射模型。因此我創建了一個xcmappingmodel和我子類NSEntityMigrationPolicy並實施了我的xcmappingmodel中的自定義策略將不會執行

createDestinationInstancesForSourceInstance 

方法。此外,我在我的映射模型的「自定義策略」字段中輸入了類名。不幸的是,我的代碼永遠不會被調用(嘗試斷點和日誌)。我的商店創建了以下選項:

NSMigratePersistentStoresAutomaticallyOption: YES 
NSInferMappingModelAutomaticallyOption: YES 

我正在使用XCode 4.0.2(並使用XCode 4.2進行了測試)。我所有其他的「輕量級」遷移都可以順利進行。我需要做些什麼才能讓我的自定義遷移運行?

回答

2

您的型號版本有何不同?核心數據必須認識到商店與模型不兼容(表示爲NSManagedObjectModel對象)。這是通過創建每個實體的屬性的哈希值並散列這些值來表示每個實體的哈希值來完成的。如果這些值不改變,則不能區分模型。

需要更多關於數據模型變化的信息來幫助您。

+0

好了,不知道。實際上這可能是問題所在,因爲我們希望利用遷移機制來改進底層目錄結構(爲了方便起見,每個記錄都有一個需要重命名的文件)。由於沒有真正的模型變更,是否有強制遷移的方法?或者我必須添加一個虛構的字段,然後用另一個遷移將其刪除? – sippndipp

+1

這可能是問題所在。添加一個虛構的字段可能會解決您的問題。這至少應該觸發你的映射。 – rsobik

+0

這是問題所在!感謝您的幫助。 – sippndipp