我在我的应用程序中引入了软删除模式。我不会将对象从我的上下文中删除,而是将它们标记为“已删除”。我将在这里使用从菜谱中(软)删除成分的示例。
我在很多地方都需要食谱的成分。如果可能的话,我想避免更新所有这些(并且可能会丢失一个)。相反,我可以重新定义配方类的 ingredients
getter,以便过滤掉软删除的对象吗?
在少数情况下,我需要完整的成分列表(包括软删除),将使用新属性,例如 ingredientsInclusionDeleted
。
这样合理吗?使用自定义 getter 执行除返回预期内容之外的其他操作是否有任何显着的副作用?我应该注意哪些具体的核心数据?
最佳答案
是的,你可以做到。然而,你的方法是倒退的。 默认 getter 不应该有任何谓词。它应该完全按照其含义进行操作,即未过滤的结果集。想象一下 6 个月后有人阅读你的代码。他们会知道“成分”实际上意味着“过滤成分”吗?没有。
因此,不要更改 default getter 的含义,而是创建一个新的 getter(命名为“filteredIngredients”之类的名称,并在任何地方使用它。这是正确的长期解决方案。
如果您担心忘记更改某些地方的属性,请执行以下操作:暂时将您的成分 getter 重命名为其他名称,例如“tempIngredients”。这将在使用它的任何地方导致编译器错误。使用适当的 getter 修复所有这些编译器错误,然后将默认 getter 重命名回“ingredients”。
希望这有帮助。
关于ios - 核心数据属性的自定义 Getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122021/