2010-08-06 25 views
0

我有一個聯繫人列表,每個聯繫人都有幾個電子郵件。在覈心數據中模擬數組類型屬性的最佳方式是什麼?

我應該創建一個Contact核心數據實體和Email實體並將幾個電子郵件對象鏈接到一個聯繫人對象?或者我應該以另一種方式來完成,例如連接所有電子郵件並將它們存儲爲一個大字符串?

什麼是最清潔和最有效的方式來處理這樣的配置?

感謝

回答

1

始終將核心數據視爲對象圖並相應地爲您的數據建模。

你應該有一個聯繫實體和一個電子郵件實體。該電子郵件應位於與聯繫人一對多雙向關係的另一端。如果您關心特定的訂單,那麼您應該在電子郵件實體中擁有一些可訂購的值,以便以後進行分類。

+0

好的,謝謝。在我看來,這個解決方案對於獲取數據的效率會比較低,但也許並不重要。 – CodeFlakes 2010-08-07 19:18:03

+0

效率並不低。核心數據比對象重用等效率要高出你自己的代碼的效率。隨着過濾和搜索的增加,效率更高。 – 2010-08-07 23:56:08

0

我應該創建一個聯繫人CoreData實體和電子郵件實體和多個電子郵件對象一個接觸對象鏈接?

這個解決方案聽起來很合理。它仍然不是「數組類型屬性」,因爲多對多關係是無序集而不是有序數組。

0

你的實體圖形看起來像(僞):

Contact{ 
    name:string 
    emailAddress:string 
    //...other attributes of contacts 
    emails<--(optional,cascade)-->>Email.contact 
} 

Email{ 
    from:string 
    // ... other attributes of emails 
    contact<<--(required,nullify)-->Contact.emails 
} 

在這兩個實體(抽象)和對象(混凝土)的圖表,你只需要鏈接聯繫人到他們的電子郵件沒有任何特定的順序。您不必擔心排序實體圖中的關係,因爲您想要顯示對象的順序可能會隨着時間而改變。該順序由每個特定獲取請求的排序描述符決定。獲取請求將以您定義的任何順序返回一個數組。例如,您希望有一次您希望收到按日期收到的電子郵件,另一次收到郵件,另一次收到其他屬性。你甚至可以通過獲取返回的數組來獲得你想要的順序。

你只是想確保實體具有捕獲你想要排序信息的屬性。

非常罕見的情況下在某種類型的排序是在實體圖形本身絕對必要的,你應該添加一個排序屬性的實體本身並編寫自定義代碼來維持排序順序。

相關問題