2010-10-22 68 views
1

我有一個數據模型,其中有一個Person實體,它具有可變形屬性,它是一個包含信息的字典數組。這個模型比這個要大得多,這只是我遇到麻煩的部分。它是由一位老開發人員以這種方式設計的,並且在接管項目時我需要將其遷移至100%的核心數據。從字典遷移到核心數據實體

因此,我需要做的是創建一個新的實體,然後遍歷Person數組中的每個字典,並使用該字典中的信息創建該實體的新實例。我認爲我可以使用NSEntityMigrationPolicy爲這個新實體設置自定義遷移,但似乎核心數據遷移期望X個源實體轉換爲X個目標實體。因爲我技術上現在有0個源實體(因爲它們在Core Data中並不知道任何關於它的數組),所以我不確定如何在遷移過程中創建新實體。

什麼,或者更確切地說,在遷移過程中,是我嘗試完成的最好方法?過去我一直使用輕量級遷移,所以這是我在自定義遷移中的第一次冒險。

回答

0

這將有助於瞭解您的數據模型(模式) - 但讓我們假設您的Person實體現在擁有家庭地址和最喜歡的餐館列表。我們進一步假設您將創建新的實體Address和Restaurant以及以下關係:

Person有一個Address,所以Person到Address之間有一對稱關係,稱爲「homeAddress」。從地址到人之間存在反向多對一的關係,因爲許多人可以住在同一個地址。

人與餐館有多對多的關係(稱爲餐館)。餐廳也可能與Person有多對多的關係(儘管這可能是雙向性沒有意義的情況之一)。

無論如何,重點是現在 - 除了PersonToPerson NSEntityMigrationPolicy子類外,您還將擁有PersonToAddress和PersonToRestaurant。這些將是您解壓縮舊數據並將其用於實例化和初始化新的Address和Restaurant對象的地方。

當然,還有很多其他複雜的問題。例如,您不希望爲每個喜歡它的人創建同一個餐廳的新實例。您需要跟蹤新創建的餐廳。

您將需要策略性地訂購映射 - 可能首先使用PersonToPerson。

你可能想看看Marcus Zarra的核心數據sample code甚至可能買他的書。