2014-10-29 51 views
0

我想成爲一名「優秀的小程序員」,併爲我的核心數據模型中的所有關係實施反演。但是,我遇到了一個讓這看起來不切實際的情況。Xcode核心數據替代通用類型的關係而沒有反轉

爲簡單起見,請考慮一個名爲Location的通用實體類型,其中包含x屬性和y屬性(並可能包含其他屬性,但讓我們保持簡單)。幾種不同的實體類型可能需要跟上一個或多個位置(玩家有原始位置和當前位置,小區有位置,目的地有位置等)。考慮到這種一般類型的所有不同用途,對於在其他實體中使用它的每個實例,在位置實體類型中建立反向關係似乎是不切實際的。

核心數據中是否有更好的替代方案來實現一個非常通用的實體類型,該類型可以避免無需關係而不需要關係?

+0

我目前正在開發一個應用程序,該應用程序利用核心數據與不具有相反的實體。我也擔心這一點,並發現以下SO發佈有幫助:http://stackoverflow.com/questions/764125/does-every-core-data-relationship-have-to-have-an-inverse蘋果的核心數據「單向關係」下的編程指南指出「在兩個方向上建模關係並不是絕對必要的。」我以前沒有找到替代方案,但我也沒有任何問題與我的應用程序中的單向關係。希望這可以幫助。 – 2014-10-29 04:58:14

+0

感謝您的評論。我猜測我要麼必須處理單向關係,要麼爲每個使用我的通用實體類型強制反向關係。我可以使位置成爲可變形的屬性,但是我強加限制(例如,刪除搜索功能),我需要保持完整。我真的希望核心數據有一個常規的方式來處理這種類型的模式 - 必須有大量的例子,其中通用的實體類型將是有用的,但如果你必須添加一個反向關係,每次你想用它 – FTLPhysicsGuy 2014-10-30 01:26:44

回答

1

沒有接收到答案,我將分享我開始使用在這種情況下,幫助模式:

基本上,我產生於爲每個特定用途的通用實體類型的實體類型,然後我可以根據需要與派生實體類型建立關係和反向關係。

例如,我可以有一個PlayerLocation實體類型和一個PlayerOrigin實體類型,它們的通用「位置」作爲它們的父實體類型(所以在面向對象的思想中,它們變成派生自位置基類的類類)。然後,Player實體類型可以與PlayerLocation具有一對一的關係(位置),並且可以與PlayerOrigin具有一對一的關係(原點),並且每個派生的位置類型可以具有唯一的反向關係(所有者)指向播放器。這裏有一個圖案:

enter image description here

這可能會導致我創造出比我原先預想更多的實體類型,但它使與該有明確的關係和逆特定的實體類型的一個非常乾淨的對象模型。

希望能幫助別人。