2017-02-15 21 views
0

我有2個實體,其中總共12個屬性存在3種變體的最小值,最大值和某些特定類型的字段的平均值。因此,我將這兩個實體重構爲三個實體,使第三個實體成爲「值」,其中包含3個屬性,即最小值,最大值和平均值。並將12個屬性降爲4個關係。下面是我的模型副本,作爲示例。核心數據一對一單向關係

enter image description here

正如你可以看到我有一個到一個與第三個實體單向關係。然而,Xcode不斷抱怨'逆向'關係。

enter image description here

按照我,我可以在「價值」加4間的關係,並更新所有成爲「反」,但是這似乎並沒有要當第二個實體被綁定到作爲正確的解決方案'價值觀',它會有額外的3個零關係,而在第一個情況下它會有1個額外的零關係。這兩個都是不必要的。我認爲,重構「價值」並將其分解成兩個相似的實體也不是一個好的解決方案。

因此,任何人都可以告訴我什麼是解決這個問題的正確方法或最佳實踐。在描述我的問題時,如果我不清楚,請告訴我。

回答

2

根據您的描述,我會撤消重構並返回使用屬性而不是關係。如果沒有真正的好處,你會增加複雜性,並且Values實體(正如你所發現的)太泛化,不能真正有用或有意義。這種重構沒有任何有用的目的;不要修復它,恢復它。

+0

是的,我同意它太通用了。讓我在明天之前等待更好的解決方案,否則不得不以更好的方式恢復或重構。 –

+0

Downvoted,這不是OP的問題的解決方案或真正的答案,這是一個意見的評論。請使用評論部分來達到這些目的。 – 2017-02-15 17:06:11

+0

@隱晦的問題是「解決這個問題的正確方法或最佳實踐」,這個答案提供了這個問題。你可能不同意這個答案,但它是一個答案。 – Martin

0

您應該查看Weak Relationships (Fetched Properties)以瞭解如何正確管理關係以及解決錯誤代碼的方法。

大多數對象關係本質上是雙向的。如果 部門與在 部門工作的員工有多對多關係,則員工與 部門之間存在反向關係。 主要的例外是提取的屬性, 表示弱單向關係 - 從目的地到源之間沒有關係 。

另外,如果你想使事情變得簡單,你應該考慮(如果可能)避免3個對象,有一個單獨的對象,或兩個對象,在考慮到NSFetchRequestpropertiesToFetch。通過這種方式,您可以獲取Entity,將屬性保存在一個單獨的Entity,中,但只能獲取您想要的屬性,並避免獲取您不打算使用的屬性的開銷和內存消耗。

無論您的需求是什麼,您都可以選擇。 GL